home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr36 / mapl0301.zip / MBS50301.MRG < prev    next >
Text File  |  1993-04-13  |  94KB  |  2,497 lines

  1. * ------------[ BLED merge (c) Ken Goosens ]-------------
  2. * Merge this against E:\RBBS\STOCK\RBBSSUB5.BAS to produce E:\RBBS\CHAT\RBBSSUB5.BAS
  3. * E:\RBBS\STOCK\RBBSSUB5.BAS:  Date 6-20-1992  Size 116575 bytes
  4. * ------------[ Created 03-01-1993 19:15:39 ]------------
  5. * REPLACING old line(s) by new
  6. ' $linesize:132
  7. ' $title: 'RBBSSUB5.BAS 17.4, Copyright 1986 - 92 by D. Thomas Mack'
  8. '  Copyright 1991 by D. Thomas Mack, all rights reserved.
  9. '  Name ...............: RBBSSUB5.BAS
  10. '  First Released .....: June 21, 1992
  11. '  Subsequent Releases.: 
  12. '  Copyright ..........: 1986 - 1992
  13. '  Purpose.............: The Remote Bulletin Board System for the IBM PC,
  14. '     RBBS-PC.BAS utilizes a lot of common subroutines.  Those that do not
  15. '     require error trapping are incorporated within RBBSSUB 2-5 as
  16. '     separately callable subroutines in order to free up as much
  17. '     code as possible within the 64K code segment used by RBBS-PC.BAS.
  18. '  Parameters..........: Most parameters are passed via a COMMON statement.
  19. '
  20. ' Subroutine  Line               Function of Subroutine
  21. '   Name     Number
  22. '  AddLink        63620  Adds a conference link
  23. * ------[ first line different ]------
  24. '  AskItems       63610  Get an list of items
  25. '  BinSearch      63520  Binary searches sorted file for a key value
  26. '  BreakFileName  63300  Break file name into component parts
  27. '  BufAsUnit      63500  Buffer out a string with CR's
  28. '  ChangeInit     63590  Get an integer value
  29. '  ChkAddedTime   63056  Check whether ok to extend time remaining
  30. '  ChkIfMsgHeader 63550  Checks whether record is a msg header
  31. '  DeLink         63620  Removes conference from linked ones
  32. '  DoorReturn     63100  Process door requests
  33. '  FdMacExe       63462  Executes a found macro
  34. '  FileSystem     20117  File System for RBBS-PC
  35. '  FindIt         63490  Check whether file exists and if so open as #2
  36. '  FormRead       63420  Read from file into a form
  37. '  LockAppend     63400  Prepare for a file append
  38. '  MacroExe       63460  Execute internal macro rather than user
  39. '  MarkItems      63600  Convert list of items into a "mark"
  40. '  MsgNameMatch   63540  Match name to one in msg header
  41. '  NextConf       63615  Sets up join to next conference link
  42. '  NoPath         63480  Detects whether string has a path in it
  43. '  RestoreCom     63310  Restore comm port after external program
  44. '  ReadMacro      63330  Read and process macro
  45. '  ReadParms      63490  Read certain number of parameters from file 2
  46. '  ReportEcho     63635  Reports echo preference of caller
  47. '  SayWelcome     63640  Welcomes callers on logon
  48. '  SetPrivileges  63650  Sets user privileges based on PASSWRDS
  49. '  SetPrompt      63470  Set prompts based on the user's security
  50. '  SetSessionTime 63645  Sets the session time
  51. '  SetSysOp       63625  Determines whether remote or global SysOp
  52. '  SetUserFlag    63560  Sets specified user flag
  53. '  SetUserPref    63630  Sets user preferences based on user record
  54. '  ShellExit      63320  Exit RBBS via shell
  55. '  SrchPasswrds   63652  Searches the PASSWRDS file
  56. '  TakeOffHook    63530  Take modem off hook
  57. '  TStats         69600  Display transfer stats from XFER-? file     ' MplXfer
  58. '  UnLockAppend   63410  Clean up after file append
  59. '  UnMarkItems    63610  Convert marked items into an input list
  60. '  VerifyAns      63510  Verify that string passes edits
  61. '  WildCard       63200  Match string to a pattern
  62. '
  63. '  $INCLUDE: 'RBBS-VAR.BAS'
  64. '
  65. * REPLACING old line(s) by new
  66. 20117 ' $SUBTITLE: 'FileSystem -- subroutine for RBBS-PC's file system'
  67. ' $PAGE
  68. '
  69. ' NAME    -- FileSystem
  70. '
  71. ' INPUTS  --       PARAMETER                 MEANING
  72. '             ZFileSysParm = 1  LIST THE SYSOP'S COMMENTS FILE
  73. '                                 2  L)IST DIRECTORY COMMAND
  74. '                                 3  D)OWNLOAD COMMAND
  75. '                                 4  RETURN FROM EXTERNAL PROTOCOLS
  76. '                                 5  U)PLOAD COMMAND
  77. '                                 6  S)CAN DIRECTORY COMMAND
  78. '                                 7  P)ERSONAL FILES COMMAND
  79. '                                 8  N)EW FILES COMMAND
  80. '                                 9  RETURN FROM EXTENDED DESCRIPTION
  81. * ------[ first line different ]------
  82. '                                 10  Batch Upload files
  83. '
  84. ' OUTPUTS -- ZFileSysParm = 1  COMMAND PROCESSED SUCCESSFULLY
  85. '                                2  RECYCLE TO TOP OF RBBS-PC (202)
  86. '                                3  PROCESS NEXT COMMAND (1200)
  87. '                                4  DENY USER ACCESS (1380)
  88. '                                5  HANDLE EXTENDED DESCRIP. (2008)
  89. '                                6  USER'S TIME EXCEEDED (10553)
  90. '                                7  Carrier DROPPED (10595)
  91. '
  92. ' PURPOSE -- To handle the RBBS-PC file system commands
  93. '
  94.       SUB FileSystem STATIC
  95.       ZFF = ZFileSysParm
  96.       ZFileSysParm = 1
  97.       ZActiveFMSDir$ = ""
  98.       CALL SaveUserActivity("F", ZNodeRecIndex, ZFalse)              ' CHAT0813
  99.       ON ZFF GOSUB 20119, _  ' HANDLER TO LIST COMMENTS TO SYSOP
  100.                   20150, _  ' L)IST DIRECTORY COMMAND HANDLER
  101.                   20180, _  ' D)OWNLOAD COMMAND HANDLER
  102.                   20263, _  ' RETURN FROM EXTERNAL Protocol'S
  103.                   20400, _  ' U)PLOAD COMMAND HANDLER
  104.                   21800, _  ' S)CAN DIRECTORY COMMAND HANDLER
  105.                   21850, _  ' P)ERSONAL FILES COMMAND HANDLER
  106.                   21860, _  ' N)EW FILES COMMAND HANDLER
  107.                   20705, _  ' RETURN FROM EXTENDED DESCRIPTIONS
  108.                   20410     ' 4)Batch Upload files
  109.       GOTO 21920
  110. * REPLACING old line(s) by new
  111. * ------[ first line different ]------
  112. 20120  X = 159             'Pe 01/19/93
  113.        Gosub 21915         'Pe 01/19/93
  114.        ZOutTxt$ = OutTxt$ + " " + _
  115.            ZFileNameHold$
  116.       IF WasRS$ <> "" THEN _
  117.          ZOutTxt$ = ZOutTxt$ + " for " + WasRS$
  118.       GOSUB 21650
  119.       IF ZFileSysParm > 1 THEN _
  120.          RETURN
  121.       CALL AskMore ("",ZTrue,ZTrue,ZAnsIndex,ZFalse)
  122.       IF ZNo THEN _
  123.          ZErrCode = 0 : _
  124.          RETURN
  125.       WasPG = ZTrue
  126. * REPLACING old line(s) by new
  127. 20122 CALL OpenWork (2,ZFileName$)
  128.       IF ZErrCode = 53 THEN _
  129. * ------[ first line different ]------
  130.        X = 160 : _             'Pe 01/19/93
  131.        Gosub 21915 : _         'Pe 01/19/93
  132.          ZOutTxt$ = OutTxt$ + " " + ZFileName$ : _
  133.          CALL UpdtCalr (ZOutTxt$,2) : _
  134.          X = 161 : _             'Pe 01/19/93
  135.          Gosub 21915 : _         'Pe 01/19/93
  136.          ZOutTxt$ = ZOutTxt$ + OutTxt$ : _
  137.          GOSUB 21650 : _
  138.          RETURN
  139.       ZJumpSupported = ZTrue
  140.       ZJumpLast$ = ""
  141.       LastOK = ZFalse
  142.       ZJumpSearching = ZFalse
  143.       MaxPrint = ZPageLength - 1
  144.       CALL CmdStackPushPop (1)
  145.       ZLastIndex = 0
  146. * REPLACING old line(s) by new
  147. 20150 ZListDir = ZTrue
  148.       ListNew = ZFalse
  149.       SearchDate$ = ""
  150.       SearchString$ = ""
  151.       WasRS$ = ""
  152.       ShowDirOfDir = (ZLastIndex <= ZAnsIndex) AND NOT ZExpertUser
  153.       WasCK = 0
  154.       ZSearchingAll = ZFalse
  155. * ------[ first line different ]------
  156.       ZExtendedOff = ZFalse 'ZTrue   'Pe 10/27/91
  157. * REPLACING old line(s) by new
  158. * ------[ first line different ]------
  159. 20155 IF ZDnldCompleted AND ZAutoEnd = 1 THEN _   'Pe 02/05/90
  160.         ZFileSysParm = 7 : _
  161.         RETURN
  162.  IF ListNew OR ZAnsIndex > 255 THEN _   'Pe 12/12/91
  163.          RETURN                         'Pe 12/12/91
  164.       CALL GetDirs (ZFalse)    'Pe 02/04/90
  165.       IF ZWasQ = 0 THEN _
  166.          RETURN
  167.       ShowDirOfDir = ZFalse
  168.       CALL ConvertDir (ZAnsIndex)
  169.       WasQX = ZLastIndex
  170. * REPLACING old line(s) by new
  171. 20159 IF ZAnsIndex < ZLastIndex THEN _
  172.          GOTO 20155
  173.       ZSearchingAll = ZFalse
  174.       CALL CmdStackPushPop (1)
  175.       ZLastIndex = 0
  176.       IF ZNo OR InFMS OR (ZFileNameHold$ = ZDirPrefix$) THEN _
  177.          GOTO 20155
  178.       GOSUB 20178
  179.       CALL QuickTPut (ZEmphasizeOff$,0)
  180.       ZTurboKey = - ZTurboKeyUser
  181. * ------[ first line different ]------
  182.        X = 162              'Pe 01/19/93
  183.        Gosub 21915         'Pe 01/19/93
  184.        ZOutTxt$ = OutTxt$
  185.       GOSUB 21667
  186.       CALL AraAllCaps (ZUserIn$(),1)
  187. '******************************* Pe 02/15/90 **********************
  188.      IF ZUserIn$(1) = "T"  AND _
  189.          ZUserSecLevel >= ZOptSec(19 - 20 * (ZMenuIndex = 6)) THEN _
  190.          ZAnsIndex = 1 : _   
  191.         CALL TypeFile : _
  192.        RETURN
  193.      IF ZUserIn$(1) = "V"  AND _
  194.          ZUserSecLevel >= ZOptSec(19 - 20 * (ZMenuIndex = 6)) THEN _
  195.          ZAnsIndex = 1 : _   
  196.         CALL GetArc : _
  197.        RETURN
  198. '******************************************************************
  199.       IF ZUserIn$(1) = "L" THEN _
  200.          ZUserIn$(ZAnsIndex) = WasA1$ : _
  201.         GOTO 20161
  202.       Temp$ = ZUserIn$(1)
  203.       Temp = (ZUserIn$(1) = "D")
  204.       CALL AskItems ("MD",Temp$,ZTrue,"file",ZMarkedFiles$)
  205.       IF ZWasQ = 0 OR ZUserSecLevel < ZOptSec(19 - 20 * (ZMenuIndex = 6)) THEN _
  206.          GOTO 20160
  207.       IF Temp THEN _
  208.          GOSUB 20202 _
  209.       ELSE IF LEN(ZUserIn$(1)) > 1 THEN _
  210.          ZAnsIndex = 1 : _
  211.          GOSUB 20202
  212. * REPLACING old line(s) by new
  213. 20162 CALL CmdStackPushPop (1)         ' save dir list list processing
  214.       CALL FMS (ZWasZ$,SearchString$,SearchDate$,InFMS, _
  215.                 ZCategoryName$(),ZCategoryCode$(),ZCategoryDesc$(),_
  216.                 DnldFlag,CatFound,ZAnsIndex)
  217.       WHILE DnldFlag > 0 AND ZSubParm > -1
  218.          GOSUB 20202
  219.          IF ZFileSysParm > 1 THEN _
  220.             RETURN
  221. * ------[ first line different ]------
  222.         IF ZDnldCompleted and ZAutoEnd = 1 THEN _  'Pe 02/05/90
  223.            RETURN       ' AUTOLOGOFF MOD
  224.          WasX$ = ZCategoryCode$(CatFound)
  225.          CALL DispUpDir (WasX$,SearchString$,SearchDate$,DnldFlag,ZAnsIndex)
  226.          CALL CheckTimeRemain (MinsRemaining)
  227.          IF ZSubParm = -1 THEN _
  228.             ZFileSysParm = 6 : _
  229.             RETURN
  230.          CALL Carrier
  231.       WEND
  232.       IF ZSubParm = -1 THEN _
  233.          ZFileSysParm = 7 : _
  234.          RETURN
  235.       IF ZAnsIndex > 255 OR ZRet THEN _
  236.          ZLastIndex = 0 : _
  237.          RETURN
  238.       CALL CmdStackPushPop (2)        ' restore dir list list processing
  239.       ZActiveFMSDir$ = ""
  240.       IF InFMS THEN _
  241.          GOTO 20159
  242.       IF ZUserSecLevel < ZMinSecToView THEN _
  243.          IF ZFileNameHold$ = ZUpldDirCheck$ THEN _
  244.        X = 163 : _             'Pe 01/19/93
  245.        Gosub 21915 : _        'Pe 01/19/93
  246.        ZOutTxt$ = OutTxt$ : _
  247.         GOSUB 21640 : _                                           'DGS-TXT
  248.         ZNo = ZTrue : _                                           'DGS-TXT
  249.         GOTO 20155                                                'DGS-TXT
  250.       ZFileNameHold$ = ZUserIn$(ZAnsIndex)
  251.       IF ZLimitSearchToFMS THEN _
  252.          GOTO 20166
  253.       IF NOT ZSearchingAll THEN _
  254.          IF ZFileNameHold$ = "ALL" OR ZFileNameHold$ = "A" THEN _
  255.             ZSearchingAll = ZTrue : _
  256.             GOSUB 21890 : _
  257.             GOTO 20157
  258.       CALL BadFile (ZFileNameHold$,BadFileNameIndex)
  259.       ON BadFileNameIndex GOTO 20163,20172,20176
  260. * REPLACING old line(s) by new
  261. 20166 ZFileName$ = ZCurDirPath$ + _
  262.                    ZFileNameHold$ + ".MNU"
  263. * ------[ first line different ]------
  264.       CALL FindIt (ZFileName$)
  265.       IF ZOK THEN _
  266.          CALL BufFile (ZFileName$,ZAnsIndex) : _
  267.          GOTO 20155
  268.       IF ZAltdirExtension$ = "" THEN _
  269.          GOTO 20172
  270.       ZFileName$ = ZCurDirPath$ + _
  271.                    ZFileNameHold$ + _
  272.                    "." + _
  273.                    ZAltdirExtension$
  274.       CALL Graphic (ZFileName$)
  275.       IF NOT ZOK THEN _
  276.          GOTO 20172
  277. * REPLACING old line(s) by new
  278. 20172 IF NOT ZSearchingAll THEN _
  279. * ------[ first line different ]------
  280.        X = 70 : _             'Pe 01/19/93
  281.        Gosub 21915 : _         'Pe 01/19/93
  282.          ZOutTxt$ = "Directory " + _
  283.               ZFileNameHold$ + _
  284.               OutTxt$ : _
  285.          GOSUB 21640 : _
  286.          ZNo = ZTrue : _
  287.          IF ZFileSysParm > 1 THEN _
  288.             RETURN
  289.       GOTO 20155
  290. * REPLACING old line(s) by new
  291. 20202 IF (ZTimeLock AND 2) AND (NOT TimeLockExempt) AND NOT ZHasPrivDoor THEN _
  292.          CALL TimeLock : _
  293.          IF NOT ZOK THEN _
  294.             RETURN
  295.       LastDnld = ZLastIndex
  296.       FirstDnld = ZAnsIndex
  297.       ZCmdTransfer$ = ""
  298. * ------[ first line different ]------
  299.       ZAnsIndex = ZLastIndex
  300.       GOSUB 20470
  301.       LastDnld = LastDnld + (WasX > 0)
  302.       BatchBytes# = 0
  303.       BatchBlocks# = 0
  304.       ZDownFiles = 0
  305.       CALL KillWork (ZNodeWorkFile$)
  306.       ZErrCode = 0
  307.       ZAnsIndex = FirstDnld
  308. * REPLACING old line(s) by new
  309. 20205 MarkingTime = (ZAnsIndex = FirstDnld OR NOT ZConcatFIles)
  310.       ZFileName$ = ZUserIn$(ZAnsIndex)
  311. * ------[ first line different ]------
  312.       CALL AllCaps(ZFileName$)              'ANSIEd
  313.       CALL Remove (ZFileName$,", ")
  314.       ZViolation$ = "Download "
  315.       IF ZListOnly THEN _
  316.          CALL BreakFileName (ZFileName$,DR$,ZWasY$,WasX$,ZTrue) : _
  317.          ZFileNameHold$ = ZWasY$ + _
  318.                            WasX$ : _
  319.          GOTO 20235
  320.       ZFileNameHold$ = ZFileName$
  321.       TmpFileNameHold$ = ZFileNameHold$                            'Pe 04/25/92
  322.       CALL BadFile (ZFileName$,BadFileNameIndex)
  323.       ON BadFileNameIndex GOTO 20220,20231,20233
  324. * INSERTING new line(s)
  325. 20210 CALL RotorsDir (ZFileName$,ZSubDir$(),ZSubDirCount + _      'Pe 06/01/92
  326.                       ((ZUserSecLevel < ZMinSecToView) OR _       'Pe 06/01/92
  327.                        NOT ZCanDnldFromUp),MarkingTime,"D")       'Pe 06/01/92
  328.        RETURN                                                     'Pe 06/01/92 
  329. * REPLACING old line(s) by new
  330. * ------[ first line different ]------
  331. 20220 IF INSTR(ZFileName$,ZDefaultExtension$)= 0 Then             'Pe 06/04/92
  332.       GOSUB 20210                                                 'Pe 06/02/92
  333.       IF ZOK THEN _                                               'Pe 06/02/92
  334.         GOTO 20235                                                'Pe 06/02/92
  335.       IF ZDotFlag THEN _                                          'Pe 06/02/92
  336.          RETURN                                                   'Pe 06/02/92
  337.      End if                                                       'Pe 06/04/92
  338.          WasI = 1                                                 'Pe 06/01/92
  339. * DELETING old line(s)
  340. 20222
  341. * REPLACING old line(s) by new
  342. * ------[ first line different ]------
  343. 20225 CALL BreakFileName (ZFileName$,DR$,WasX$,Extension$,ZFalse) 'Pe 06/01/92
  344.         WasJ = INSTR(Mid$(ZCompressedExt$+". ",WasI),".")        'Pe 04/18/92
  345.        IF WasJ = 0 THEN _                                        'Pe 04/18/92
  346.           GOTO 20231                                             'Pe 06/04/92
  347.               Check$ = MID$(ZCompressedExt$,WasI,WasJ-1)         'Pe 04/28/92
  348.           WasI = WasI + WasJ                                     'Pe 04/18/92
  349.        ZFileName$ = WasX$ + "." + Check$                         'Pe 04/18/92
  350.       ZFileNameHold$ = ZFileName$                                'Pe 04/18/92
  351.      GOSUB 20210                                                 'Pe 06/01/92
  352.  IF ZOK THEN _                                                   'Pe 06/01/92
  353.        GOTO 20235                                                'Pe 06/01/92
  354.      IF ZDotFlag THEN _                                          'Pe 06/01/92
  355.         RETURN                                                   'Pe 06/01/92
  356.       GOTO 20225                                                 'Pe 06/01/92
  357. * REPLACING old line(s) by new
  358. * ------[ first line different ]------
  359. 20231  X = 70              'Pe 01/19/93
  360.        Gosub 21915         'Pe 01/19/93
  361.        ZOutTxt$ = TmpFileNameHold$ + _                             'Pe 04/18/92
  362.            OutTxt$
  363.       CALL UpdtCalr (ZOutTxt$,2)
  364.       ZOutTxt$ = ZOutTxt$ + _
  365.            " Correct name"+ZPressEnterExpert$
  366.       ZSuspendAutoLogoff = ZTrue
  367.       GOSUB 21660
  368.       ZSuspendAutoLogoff = ZFalse
  369.       IF ZFileSysParm > 1 THEN _
  370.          RETURN
  371.       IF ZWasQ=0 THEN _
  372.          IF ZBatchTransfer AND ZAnsIndex >= LastDnld THEN _
  373.             GOTO 20262 _
  374.          ELSE ZAutoLogOffReq = ZFalse : _
  375.               RETURN
  376.       ZUserIn$(ZAnsIndex) = ZUserIn$(1)
  377.       GOTO 20205
  378. * REPLACING old line(s) by new
  379. 20236 ZLine25$ = "(D) " + _
  380.                  ZWasZ$
  381. * ------[ first line different ]------
  382. '
  383. ' *  TEST FOR DOWNLOAD SECURITY
  384. '
  385.       CALL OpenWork (2,ZFileSecFile$)
  386.       IF ZErrCode = 53 THEN _
  387.        X = 160 : _              'Pe 01/19/93
  388.        Gosub 21915  : _        'Pe 01/19/93
  389.          CALL UpdtCalr (OutTxt$ + " " + ZFileSecFile$,2) : _
  390.          GOTO 20247
  391. * REPLACING old line(s) by new
  392. 20244 IF ZUserSecLevel < VAL(ZWorkAra$(2)) THEN _
  393.          GOTO 20245
  394.       FilePswd$ = ZWorkAra$(3)
  395.       IF FilePswd$ = "" THEN _
  396.          GOTO 20247
  397. * ------[ first line different ]------
  398.       CALL AraAllCaps (ZUserIn$(),1)
  399.       IF ZUserIn$(1) = FilePswd$ THEN _
  400.          GOTO 20247
  401.        X = 164               'Pe 01/19/93
  402.        Gosub 21915         'Pe 01/19/93
  403.       ZOutTxt$ = OutTxt$ + " " + ZFileName$
  404.       GOSUB 21660
  405.       IF ZFileSysParm > 1 THEN _
  406.          RETURN
  407.       IF ZWasQ = 0 THEN _
  408.          RETURN
  409.       CALL AllCaps (ZUserIn$(1))
  410.       IF ZUserIn$(1) = FilePswd$ THEN _
  411.          GOTO 20247
  412. * REPLACING old line(s) by new
  413. 20247 ZWasDF = 0
  414.       CALL BreakFileName (ZFileName$,DR$,WasX$,Extension$,ZFalse)
  415. * ------[ first line different ]------
  416.  IF INSTR("...WRK.FW .GIF.JPG.MAC.ARC.EXE.COM.OBJ.WKS.LBR.ZIP.PAK.ZOO.ARJ.LZH.","."+Extension$+".") > 2 OR _
  417.          MID$(Extension$,2,1) = "Q" OR _                         'ST022093
  418.          (ZRequireNonASCII AND Extension$ = "BAS") THEN _
  419.             ZWasDF = ZTrue
  420. * REPLACING old line(s) by new
  421. 20260 ZTransferFunction = 1
  422. * ------[ first line different ]------
  423.       ZWasBatchTransfer = ZFalse             'Pe 03/02/92
  424.       ZUpBatchTransfer = ZFalse              'Pe 03/02/92
  425.       GOSUB 21790
  426.       IF ZFileSysParm > 1 THEN _
  427.          RETURN
  428.          ZBatchTransfer = ZBatchProto                     'Pe Batch Mod
  429.       IF ZBatchTransfer AND ZCmdTransfer$ = "" THEN _
  430.          ZCmdTransfer$ = ZWasFT$
  431.       ON INSTR("AXCYN",ZInternalProt$) GOTO _
  432.          20340, _              ' ASCII DOWNLOAD
  433.          20290, _              ' Xmodem
  434.          20290, _              ' Xmodem CRC
  435.          20270, _              ' YMODEM
  436.          21700                 ' NONE - CANCEL
  437. '
  438. ' *  EXTERNAL Protocol Downloads/Uploads
  439. '
  440. * REPLACING old line(s) by new
  441. 20262 IF ZBatchTransfer THEN _
  442.          IF ZAnsIndex < LastDnld THEN _
  443.             RETURN _
  444.          ELSE ZBlocksInFile# = BatchBlocks# : _
  445.               ZBytesInFile# = BatchBytes# : _
  446.               ZNumDnldBytes! = BatchBytes# : _
  447.               IF ZBytesInFile# < 1 THEN _
  448.                  RETURN _
  449.               ELSE GOSUB 20780 : _
  450.                    IF ZFileSysParm > 1 OR NOT ZOK THEN _
  451.                       RETURN
  452. * ------[ first line different ]------
  453.          IF ZAbort THEN _
  454.             ZAbort = ZFalse : _              'Pe 01/26/92
  455.             ZDnldCompleted = ZFalse : _
  456.             GOSUB 21760 : _
  457.             RETURN
  458.       GOSUB 20337
  459.       CALL Transfer
  460. * REPLACING old line(s) by new
  461. 20263 IF ZPrivateDoor THEN _
  462.          ZCmdTransfer$ = ZWasFT$ : _
  463.          CALL XferType (2,ZTrue) : _
  464.          ZCmdTransfer$ = ""
  465.       CALL OpenWork (2,"XFER-" + ZNodeID$ + ".DEF")
  466.       IF ZErrCode <> 0 THEN _
  467.          GOTO 20267
  468.       CALL ReadParms (ZWorkAra$(), ZFailureParm, 1)
  469.       IF ZErrCode <> 0 THEN _
  470.          GOTO 20267
  471.       CLOSE 2
  472. * ------[ first line different ]------
  473.       IF NOT ZFakeXRpt THEN _                  'Pe 03/26/92
  474.         Call TStats                            'Pe 03/26/92
  475.       CALL KillWork ("XFER-" + ZNodeID$ + ".DEF")
  476. * REPLACING old line(s) by new
  477. 20265 IF ZTransferFunction = 2 THEN _
  478.          IF INSTR(ZWorkAra$(ZFailureParm),ZFailureString$) <> 1 THEN _
  479.             GOTO 20700 _
  480.          ELSE GOTO 20730
  481.       IF ZTransferFunction = 1 THEN _
  482. * ------[ first line different ]------
  483.         ZDnldCompleted = (INSTR(ZWorkAra$(ZFailureParm),ZFailureString$) <> 1)  'Pe 05/30/91
  484.       GOSUB 21760
  485.       CALL Carrier
  486.       IF ZSubParm = -1 THEN _
  487.          ZFileSysParm = 7
  488.       RETURN
  489. '
  490. ' *  XFER FILE NOT Found
  491. '
  492. * REPLACING old line(s) by new
  493. * ------[ first line different ]------
  494. 20292 X = 165               'Pe 01/19/93
  495.       Gosub 21915        'Pe 01/19/93
  496.       Call QuickTput1 (OutTxt$) : _
  497.       Call Delaytime (3) : _
  498.       Return
  499. * DELETING old line(s)
  500. 20294
  501. * REPLACING old line(s) by new
  502. * ------[ first line different ]------
  503. 20318 X = 166               'Pe 01/19/93
  504.        Gosub 21915        'Pe 01/19/93
  505.       ZOutTxt$ = OutTxt$
  506.       GOSUB 21630
  507.       IF ZFileSysParm > 1 THEN _
  508.          RETURN
  509.       CALL DelayTime (3)
  510.       RETURN
  511. * DELETING old line(s)
  512. 20325
  513. * REPLACING old line(s) by new
  514. * ------[ first line different ]------
  515. 20330 GOSUB 20337
  516.       ZOutTxt$ = ZProtoPrompt$ + _
  517.             " " + WasA1$ + _
  518.             " of " + _
  519.             ZFileNameHold$ + _
  520.             " ready.  <Ctrl X> aborts"
  521.       GOSUB 21650
  522.       RETURN
  523. * DELETING old line(s)
  524. 20335
  525. * REPLACING old line(s) by new
  526. 20340 IF ZWasDF THEN _
  527. * ------[ first line different ]------
  528.        X = 167 : _              'Pe 01/19/93
  529.        Gosub 21915  : _        'Pe 01/19/93
  530.          ZOutTxt$ = OutTxt$ : _
  531.          GOSUB 21650 : _
  532.          GOTO 21700
  533.       GOSUB 20750
  534.       IF ZFileSysParm > 1 OR NOT ZOK THEN _
  535.          RETURN
  536.       CALL OpenWork (2,ZFileName$)
  537.       IF (ZAnsIndex = FirstDnld OR NOT ZConcatFIles) THEN _
  538.          GOSUB 20337 : _
  539.        X = 168 : _              'Pe 01/19/93
  540.        Gosub 21915  : _        'Pe 01/19/93
  541.          ZOutTxt$ = OutTxt$ : _
  542.          GOSUB 21640 : _
  543.          IF ZFileSysParm > 1 THEN _
  544.             RETURN _
  545.          ELSE X = 169 : _              'Pe 01/19/93
  546.              Gosub 21915  : _        'Pe 01/19/93
  547.  ZOutTxt$ = ZProtoPrompt$ + " SEND of " + _
  548.               ZFileNameHold$ + _
  549.               OutTxt$ : _
  550.          ZTurboKey = 2 : _
  551.          ZForceKeyboard = ZTrue : _
  552.          ZSuspendAutologoff = ZTrue : _
  553.          GOSUB 21660 : _
  554.          ZSuspendAutologoff = ZFalse : _
  555.          IF ZFileSysParm > 1 THEN _
  556.             RETURN
  557. * REPLACING old line(s) by new
  558. 20380 ZStopInterrupts = ZFalse
  559.       WasTU = 0
  560.       SWAP WasTU,ZPageLength
  561.       CALL BufFile (ZFileName$,WasX)
  562.       SWAP WasTU,ZPageLength
  563.       ZNonStop = (ZPageLength < 1)
  564.       IF StopFile THEN _
  565. * ------[ first line different ]------
  566.          ZDnldCompleted = ZFalse : _   'Pe 05/29/91
  567.          GOTO 20390
  568. * REPLACING old line(s) by new
  569. 20385 ZDnldCompleted = ZTrue   'Pe 05/30/91
  570. * REPLACING old line(s) by new
  571. 20395 GOSUB 21640
  572.       IF ZFileSysParm > 1 THEN _
  573.          RETURN
  574. * ------[ first line different ]------
  575.        X = 170              'Pe 01/19/93
  576.        Gosub 21915        'Pe 01/19/93
  577.       ZOutTxt$ = OutTxt$ +ZPressEnterExpert$
  578.       GOSUB 21660
  579.       IF ZFileSysParm > 1 THEN _
  580.          RETURN
  581.       IF ZWasQ = 0 THEN _
  582.          RETURN
  583.       ZUserIn$(ZAnsIndex) = ZUserIn$(1)
  584.       GOTO 20435
  585. * REPLACING old line(s) by new
  586. 20400 CALL TimeBack (1)
  587. * ------[ first line different ]------
  588.       ZUpBatchTransfer = ZFalse     'Pe 12/08/91
  589.       ZWasBatchTransfer = ZFalse
  590.       GOSUB 20420
  591.       ZAutoLogOffReq = 0
  592.       FirstUpld = ZAnsIndex
  593.       GOTO 20430
  594. * INSERTING new line(s)
  595. 20410 CALL TimeBack (1)
  596.       CALL KillWork (ZBatchWorkFile$)                 'Pe Batchup mod 
  597.       ZErrCode = 0
  598.       ZUpBatchTransfer = ZTrue
  599.       Call Killwork ("BatchUp" +ZNodeID$ +".LST")
  600.       ZErrCode = 0
  601.       ZAutoLogOffReq = 0
  602. '
  603. ' changes for 12/28/91
  604. '
  605. If LEN(ZUserIn$) < 3 Then _
  606.       CALL Batchit : _
  607.       FirstUpld = 2 : _
  608.       LastUpld = ZLastIndex : _
  609.       GOTO 20430
  610.      FirstUpld = ZAnsIndex
  611.     Goto 20430
  612.  
  613. * REPLACING old line(s) by new
  614. * ------[ first line different ]------
  615. 20420  X = 171              'Pe 01/19/93
  616.       Gosub 21915        'Pe 01/19/93
  617.       ZOutTxt$ = OutTxt$
  618.       GOSUB 21667
  619.       RETURN
  620. '
  621. ' *  SEARCH FOR DUPLICATE FILENAME
  622. '
  623. * REPLACING old line(s) by new
  624. 20432 FOR ZAnsIndex = FirstUpld TO LastUpld
  625.          IndexSave = ZAnsIndex
  626.          GOSUB 20471
  627.          GOSUB 20435
  628.          FirstUpld = FirstUpld + 1
  629.          IF ZFileSysParm > 1 THEN _
  630.             IndexSave = LastUpld + 1
  631.          ZAnsIndex = IndexSave
  632. * ------[ first line different ]------
  633.      NEXT
  634.     ZCmdTransfer$ = ""
  635.       RETURN
  636. * REPLACING old line(s) by new
  637. 20435 ZFileNameHold$ = ZUserIn$(ZAnsIndex)
  638.       ExtSrch = ZFalse
  639.       IF INSTR(ZFileNameHold$,".") = 0 THEN _
  640.          ZFileNameHold$ = ZFileNameHold$ + "." + ZDefaultExtension$
  641.       CALL AllCaps(ZFileNameHold$)
  642.       ZFileName$ = ZFileNameHold$
  643.       ZViolation$ = "Upload "
  644.       CALL NoPath (ZFileName$,BadFileNameIndex)
  645.       IF BadFileNameIndex THEN _
  646.          GOTO 20451
  647.       CALL BadFile (ZFileName$,BadFileNameIndex)
  648.       ON BadFileNameIndex GOTO 20440,20451,20515
  649. * ------[ first line different ]------
  650. '
  651. ' Following mod was orig from DGS-UNW mod....updated for Maple code 12/15/91
  652. * REPLACING old line(s) by new
  653. * ------[ first line different ]------
  654. 20440 TmpName$ = ZDirPath$+"NOTHANX.DEF"                         'Pe 06/01/92
  655.       CALL FindIt (TmpName$)                                        'DGS-UNW
  656.       IF ZOK THEN
  657.        X = 172              'Pe 01/19/93
  658.        Gosub 21915        'Pe 01/19/93
  659.        CALL QuickTPut1 (OutTxt$ + " "+ZFileNameHold$)
  660.         CALL OpenWork (2,TmpName$)
  661.          HaveFile$ = ""
  662.           FileInList = ZFalse
  663.             WHILE NOT EOF(2) AND NOT FileInList
  664.          INPUT #2, HaveFile$
  665.         CALL AllCaps (HaveFile$)
  666.           FileInList = (INSTR(ZFileNameHold$,HaveFile$) > 0)
  667.      WEND
  668.        CLOSE 2
  669.       END IF
  670.      IF FileInList THEN _
  671.     GOTO 20443
  672. '
  673. ' If you want to eliminate either one of these routines just comment
  674. ' out the one you don't want....NOTHANX.DEF must reside in RBBS's Subdir
  675. ' the OFFLINE.DIR were your Master FMS dir is kept....you can change names
  676. ' as you see fit. 
  677. '                  !!DO NOT COMMENT OUT THE LINE NUMBER !!
  678. '
  679.  TmpName$ = ZDirPath$+"OFFLINE.DIR"                            'PE mode2 to
  680.        CALL FindIt (TmpName$)                                        'DGS-UNW
  681.         IF ZOK THEN
  682.        X = 173               'Pe 01/19/93
  683.        Gosub 21915        'Pe 01/19/93
  684.           CALL QuickTPut1 (OutTxt$ + " "+ZFileNameHold$ )
  685.            CALL OpenWork (2,TmpName$)
  686.             HaveFile$ = ""
  687.              FileInList = ZFalse
  688.                WHILE NOT EOF(2) AND NOT FileInList
  689.                 LINE INPUT #2, HaveFile$                     'Pe 12/15/91
  690.                  CALL AllCaps (HaveFile$)
  691.                   StopReading = INSTR(HaveFile$,".")
  692.                    HaveFile$ = Left$(HaveFile$,StopReading)    'Pe 12/16/91
  693.                   Search = INSTR(ZFileNameHold$,".")
  694.                   Search$ = Left$(ZFileNameHold$,Search)
  695.                  If Search$ = HaveFile$ THEN_
  696.                 FileInList = ZTrue
  697.              WEND
  698.       CLOSE 2
  699.         END IF
  700. '
  701. '    next 2 lines
  702. '    Allow Sysop to update FMS listing with a local upload
  703. '    even if the filename exists in the NOTHANX.DEF OR OFFLINE.DIR
  704. '
  705. * INSERTING new line(s)
  706. 20443   If ZSysop Then _
  707.             FileinList = ZFalse            'Pe 12/15/91
  708.         IF FileInList THEN _
  709.            CALL BufFile (ZHelpPath$+"NOTHANX.MSG",WasX) : _  'Pe 06/01/92
  710.            CALL DelayTime (3) : _
  711.            GOTO 20453
  712.         CALL Carrier
  713.         IF ZSubParm = -1 THEN _
  714.            ZFileSysParm = 7 : _
  715.            RETURN
  716.       PersFile$ = ZFileName$                                     'Pe 08/09/91
  717.       ZFileName$ = ZPersonalDrvPath$ + PersFile$                 'Pe 08/08/91
  718.       Call FindFile (ZFileName$,ZOK)                             'Pe 08/09/91
  719.       IF ZOK THEN Goto 20452                                     'Pe 08/09/91
  720.       ZFileName$ = PersFile$                                     'Pe 08/09/91
  721.       CALL RotorsDir (ZFileName$,ZSubDir$(),ZSubDirCount,ZTrue,"U")
  722. * REPLACING old line(s) by new
  723. 20450 IF Extension$ <> Check$ THEN _
  724. * ------[ first line different ]------
  725.       CALL RotorsDir (WasX$ + "." + Check$,ZSubDir$(),ZSubDirCount,ZTrue,"U") : _
  726.          IF ZOK THEN _
  727.             ExtSrch = ZTrue : _
  728.             GOTO 20452
  729.       GOTO 20447
  730. * REPLACING old line(s) by new
  731. * ------[ first line different ]------
  732. 20451 X = 174              'Pe 01/19/93
  733.       Gosub 21915        'Pe 01/19/93
  734.       ZOutTxt$ = OutTxt$+ ZFileName$ + ">"
  735.       GOTO 20395
  736. * REPLACING old line(s) by new
  737. 20452 IF ZUserSecLevel < ZOverWriteSecLevel THEN _
  738.          GOTO 20453
  739.       IF ExtSrch AND (WasX$ + "." + Check$) <> ZFileName$ THEN _
  740. * ------[ first line different ]------
  741.        X = 175 : _              'Pe 01/19/93
  742.        Gosub 21915  : _        'Pe 01/19/93
  743.          ZOutTxt$ = WasX$ + "." + Check$ + OutTxt$ _
  744.       ELSE X = 176              'Pe 01/19/93
  745.        Gosub 21915        'Pe 01/19/93
  746.        ZOutTxt$ = OutTxt$
  747.       GOSUB 21660
  748.       IF ZFileSysParm > 1 THEN _
  749.          RETURN
  750.       IF NOT ZYes THEN _
  751.          GOTO 20453
  752.       ZWasZ$ = ZFileName$
  753.       CALL KillWork (ZFileName$)
  754.       IF ZErrCode <> 0 AND ZErrCode <> 53 THEN _
  755.        X = 177 : _              'Pe 01/19/93
  756.        Gosub 21915  : _        'Pe 01/19/93
  757.          ZOutTxt$ = OutTxt$ : _
  758.          GOSUB 21660 : _
  759.          RETURN
  760.       GOTO 20475
  761. * REPLACING old line(s) by new
  762. 20453 CLOSE 2
  763. * ------[ first line different ]------
  764.       FileInList = ZFalse ' Pe 12/31/92
  765.       IF ZUserSecLevel >= ZAddDirSecurity THEN _
  766.          GOTO 20455
  767. * REPLACING old line(s) by new
  768. * ------[ first line different ]------
  769. 20454 X = 178               'Pe 01/19/93
  770.       Gosub 21915         'Pe 01/19/93
  771.       CALL QuickTPut1 (OutTxt$ + " " + ZFileNameHold$)
  772.       CALL DelayTime (3)  'Pe 08/04/91
  773.       PersFile$ = ""      'Pe 08/08/91
  774.       CALL UpdtCalr ("Upload duplicate " + ZFileNameHold$,1)
  775.       RETURN
  776. * REPLACING old line(s) by new
  777. * ------[ first line different ]------
  778. 20455 X = 179              'Pe 01/19/93
  779.        Gosub 21915        'Pe 01/19/93
  780.        ZOutTxt$ = OutTxt$
  781.       ZTurboKey = - ZTurboKeyUser
  782.       GOSUB 21660
  783.       IF ZFileSysParm > 1 THEN _
  784.          RETURN
  785.       IF NOT ZYes THEN _
  786.          RETURN
  787.       GOSUB 20460
  788.       IF WhoTo$ = "" THEN _
  789.          RETURN
  790.       AddingDescOnly = ZTrue
  791.       ZWasBatchTransfer = ZFalse    'Pe 01/03/92
  792.       ZWasFT$ = "l"
  793. CALL UpdtUpload (ZCategoryName$(),ZCategoryCode$(),ZLinesInMsg,1) 'UPL-MOD pe082690
  794. 'Call AutoLogoff    'Pe 10/20/91 Test mod... remove when working
  795.       GOSUB 20702
  796.       RETURN
  797. * REPLACING old line(s) by new
  798. * ------[ first line different ]------
  799. 20460 CALL KillWork (ZNodeWorkFile$)      'Pe BatchUp
  800.       WhoTo$ = ""
  801.      IF ZUpBatchTransfer THEN _          'Pe 04/29/92
  802.       WhoTo$ = "ALL"                     'Pe 04/29/92
  803.       WasY$ = ZFileName$
  804.       IF ZUserSecLevel >= ZMinSecPersUpld THEN _
  805.          CALL SetWhoTo (ZTrue,WhoTo$,"",RcvrRecNum,Found) _
  806.       ELSE WhoTo$ = "ALL"
  807.       ZFileName$ = WasY$
  808.       RETURN
  809. * REPLACING old line(s) by new
  810. 20471 ZWasZ$ = ZUserIn$(ZAnsIndex)
  811.       CALL AllCaps(ZWasZ$)
  812.       WasX = 0
  813.       IF LEN (ZWasZ$) = 1 THEN _
  814.          WasX = INSTR(ZDefaultXfer$,ZWasZ$) : _
  815.          IF WasX > 0 THEN _
  816.             ZAnsIndex = ZAnsIndex + 1 : _
  817.             IndexSave = IndexSave + 1 : _
  818.             ZCmdTransfer$ = ZWasZ$ : _
  819. * ------[ first line different ]------
  820.             IF MID$(ZInternalEquiv$,WasX,1) = "N" THEN _
  821.                ZCmdTransfer$ = ""
  822.       RETURN
  823. * REPLACING old line(s) by new
  824. 20475 ZWasZ$ = ZUpldDriveFile$
  825.       CALL FindFree
  826.       IF VAL(ZFreeSpace$) < 4096 THEN _
  827.          GOSUB 21895 : _
  828.          IndexSave = ZLastIndex + 1 : _
  829.          RETURN
  830. * ------[ first line different ]------
  831.        X = 180               'Pe 01/19/93
  832.        Gosub 21915        'Pe 01/19/93
  833.       ZOutTxt$ = OutTxt$ + ZFreeSpace$
  834.       GOSUB 21640
  835.       IF ZFileSysParm > 1 THEN _
  836.          RETURN
  837.     GOSUB 20460                                                  'Pe 08/08/91
  838.       If ZMplPersUpload = ZTrue Then _                           'Pe 08/09/91
  839.       ZFileName$ = ZPersonalDrvPath$ + PersFile$                 'Pe 08/08/91
  840. '*****************
  841. CALL UpdtUpload (ZCategoryName$(),ZCategoryCode$(),ZLinesInMsg,1)  '<++++++
  842. '*****************
  843. * INSERTING new line(s)
  844. 20476 IF ZAbort THEN _     'Pe 09/07/91 added line number
  845.       ZAbort = ZFalse : _   'PE 12/14/88
  846.         RETURN
  847.       ZLine25$ = "(U) " + _
  848.                  ZFileNameHold$
  849.       ZSubParm = 2
  850.       CALL Line25
  851.       ZOutTxt$ = ""
  852.       ZOK = ZTrue
  853. * REPLACING old line(s) by new
  854. * ------[ first line different ]------
  855. 20500  ZTransferFunction = 2
  856.       GOSUB 21790
  857.       IF ZFileSysParm > 1 THEN _
  858.          RETURN
  859.       IF ZInternalProt$ = "N" THEN _                       'Pe 08/08/91
  860.          GOTO 21700                                        'Pe 08/08/91
  861. IF NOT ZUpBatchTransfer THEN _
  862. CALL AutoLogOff            'Pe 02/04/90
  863.       IF ZAutoEnd = 2 THEN _
  864.          RETURN
  865.       ON INSTR("AXCYN",ZInternalProt$) GOTO _
  866.          20560, _         ' ASCII UPLOAD
  867.          20542, _         ' Xmodem
  868.          20542, _         ' Xmodem CRC
  869.          20542, _         ' YMODEM
  870.          20735            ' NONE - CANCEL
  871.       GOTO 20261
  872. * REPLACING old line(s) by new
  873. * ------[ first line different ]------
  874. 20542 X = 165              'Pe 01/19/93
  875.       Gosub 21915         'Pe 01/19/93
  876.       Call QuickTput1 (OutTxt$) : _
  877.       Call Delaytime (3) : _
  878.       Return
  879. '
  880. ' *  ASCII UPLOAD
  881. '
  882. * REPLACING old line(s) by new
  883. 20560 LineACK = (ZDefaultLineACK$ <> "")
  884.       IF LineACK THEN _
  885. * ------[ first line different ]------
  886.        X = 181 : _              'Pe 01/19/93
  887.        Gosub 21915  : _        'Pe 01/19/93
  888.          ZOutTxt$ = OutTxt$ : _
  889.          ZTurboKey = - ZTurboKeyUser : _
  890.          LineACK = NOT ZNo : _
  891.          GOSUB 21660 : _
  892.          IF ZFileSysParm > 1 THEN _
  893.             RETURN
  894.       GOSUB 20337
  895.        X = 182              'Pe 01/19/93
  896.        Gosub 21915       'Pe 01/19/93
  897.       CALL QuickTPut1 (OutTxt$)
  898.       CALL QuickTPut1 (ZProtoPrompt$+" RECEIVE of " + ZFileNameHold$ + " ready")
  899.       ZOK = ZFalse
  900.       XOff = ZFalse
  901.       CALL OpenOutW(ZFileName$)
  902.       IF ZErrCode <> 0 AND ZErrCode <> 53 THEN _
  903.          ZWasEL = 20560 : _
  904.          GOTO 21900
  905.       GOSUB 20510
  906.       IF ZFileSysParm > 1 THEN _
  907.          RETURN
  908. * REPLACING old line(s) by new
  909. * ------[ first line different ]------
  910. 20670 X = 183               'Pe 01/19/93
  911.        Gosub 21915        'Pe 01/19/93
  912.        ZOutTxt$ = ZXOff$ + OutTxt$
  913. * REPLACING old line(s) by new
  914. 20700 GOSUB 21780
  915.       IF ZFileSysParm > 1 THEN _
  916.          RETURN
  917. * ------[ first line different ]------
  918. '
  919. '20702 IF ZWasFT$ = "l" THEN _          'Pe 12/28/91
  920. '         ZWasBatchTransfer = ZFalse    'Pe 12/28/91
  921. '
  922. 'Line number moved for Local Uploads    'Pe 01/03/91
  923. '
  924.       IF ZWasBatchTransfer Then _
  925.         CALL BatchUpload (ZDesc$,ZUCat$,2) : _
  926.         GOTO 20703
  927. * REPLACING old line(s) by new
  928. * ------[ first line different ]------
  929. 20702 CALL UpdtUpload (ZCategoryName$(),ZCategoryCode$(), ZLinesInMsg,2) 'Pe 02/03/90
  930. '
  931. * INSERTING new line(s)
  932. 20703 IF ZAutoEnd = 1 THEN _                'AUTO-UP MOD
  933.          ZFileSysParm = 7: _             'Pe BatchUp 09/12/91
  934.          ZDnldCompleted = ZTrue : _      'Pe BatchUp 09/12/91
  935.          RETURN                             'AUTO-UP MOD
  936.       IF NOT ZGetExtDesc THEN _
  937.          ZPrivateDoor = ZFalse : _
  938.          GOTO 20710
  939.        X = 184             'Pe 01/19/93
  940.        Gosub 21915        'Pe 01/19/93
  941.       ZMsgHeader$ = OutTxt$ + " " + ZFileNameHold$
  942.       ZSysopComment = ZTrue
  943.       ZMaxMsgLines = ZMaxExtendedLines
  944.       WasLL = ZRightMargin
  945.       ZRightMargin = 30 + ZMaxDescLen
  946.       IF ZRightMargin > 74 THEN _
  947.          ZRightMargin = 74
  948.       ZFileSysParm = 5
  949.       RETURN
  950. * REPLACING old line(s) by new
  951. 20705 ZMaxMsgLines = ZMaxMsgLinesDef
  952.       ZRightMargin = WasLL
  953. * ------[ first line different ]------
  954.       CALL UpdtUpload (ZCategoryName$(),ZCategoryCode$(),ZLinesInMsg,3)  'Pe 02/04/90
  955. * REPLACING old line(s) by new
  956. 20730 GOSUB 21780
  957. * ------[ first line different ]------
  958.        X = 160              'Pe 01/19/93
  959.        Gosub 21915        'Pe 01/19/93
  960.       CALL QuickTPut1 (OutTxt$)
  961.       ZAutoLogoffReq = ZFalse                'Pe 10/20/91
  962.       ZWasBatchTransfer = ZFalse             'Pe 03/02/92
  963.       ZUpBatchTransfer = ZFalse              'Pe 03/02/92
  964.       LastUpld = 0
  965.       ZPrivateDoor = ZFalse
  966. * REPLACING old line(s) by new
  967. 20735 CALL KillWork (ZFileName$)
  968. * ------[ first line different ]------
  969.       IF ZErrCode <> 0 THEN _
  970.          ZWasEL = 20736 : _
  971.          GOTO 21900
  972.       ZAnsIndex = ZLastIndex + 1
  973.       IndexSave = ZAnsIndex
  974.       ZLastIndex = 0
  975.       RETURN
  976. '
  977. ' *  Sysop ABORTED UPLOAD
  978. '
  979. * REPLACING old line(s) by new
  980. * ------[ first line different ]------
  981. 20745 X = 186              'Pe 01/19/93
  982.        Gosub 21915        'Pe 01/19/93
  983.        ZOutTxt$ = ZXOff$ + OutTxt$
  984.       GOTO 20675
  985. '
  986. ' *  CALCULATE DOWNLOAD TIME ESTIMATE
  987. '
  988. * REPLACING old line(s) by new
  989. 20760 IF ZErrCode <> 0 THEN _
  990. * ------[ first line different ]------
  991.        X = 187 : _              'Pe 01/19/93
  992.        Gosub 21915  : _        'Pe 01/19/93
  993.          CALL QuickTPut1 (OutTxt$ + " " +ZFileNameHold$) : _
  994.          CALL UpdtCalr (OutTxt$ + " "+ZFileName$,2) : _
  995.          ZOK = ZFalse : _
  996.          ZErrCode = 0 : _
  997.          ZBytesInFile# = 0 : _
  998.          RETURN
  999.       ZBytesInFile# = LOF(2)
  1000.       ZNumDnldBytes! = LOF(2)
  1001.       ZOK = ZTrue
  1002.       IF SizeOnly THEN _
  1003.          SizeOnly = ZFalse : _
  1004.          RETURN
  1005.       ZBlocksInFile# = MaxBlock
  1006.       IF ZBatchTransfer THEN _
  1007.          BatchBlocks# =  BatchBlocks# + ZBlocksInFile# : _
  1008.          BatchBytes# = BatchBytes# + ZBytesInFile# : _
  1009.          CALL OpenWorkA (ZNodeWorkFile$) : _
  1010.          CALL PrintWorkA (ZFileName$) : _
  1011.          ZDownFiles = ZDownFiles + 1 : _
  1012.          CLOSE 2 : _
  1013.          RETURN
  1014.       ZDownFiles = 1
  1015. * REPLACING old line(s) by new
  1016. 20791 CALL CheckTimeRemain (MinsRemaining)
  1017.       IF ZSubParm = -1 THEN _
  1018.          ZFileSysParm = 6 : _
  1019.          RETURN
  1020.       ZOK = ZTrue
  1021.       Temp = ZExtraDnldTime
  1022.       CALL ChkAddedTime (Temp)
  1023.       Temp = MinsRemaining + Temp
  1024.       ZWasA = INT(ZBlocksInFile# / 60) + 1
  1025.       IF ZWasA <= Temp THEN _
  1026.          GOTO 20793
  1027. * ------[ first line different ]------
  1028.       IF ZDownFiles < 2 THEN _
  1029.          CALL AllCaps (ZFileNameHold$) : _
  1030.        X = 188 : _              'Pe 01/19/93
  1031.        Gosub 21915  : _        'Pe 01/19/93
  1032.          ZOutTxt$ = ZFileNameHold$ +OutTxt$ _
  1033.                  + STR$(ZWasA) + "  have" + STR$(Temp) : _
  1034.          CALL UpdtCalr (ZOutTxt$,2) : _
  1035.          CALL QuickTPut1 (ZOutTxt$) _
  1036.       ELSE CALL OpenWork (2,ZNodeWorkFile$) : _
  1037.            WHILE NOT EOF(2) : _
  1038.               CALL ReadDir (2,1) : _
  1039.               CALL BreakFileName (ZOutTxt$,DR$,ZWasY$,WasX$,ZTrue): _
  1040.               ZFileName$ = ZWasY$ + WasX$ : _
  1041.               X = 188 : _              'Pe 01/19/93
  1042.               Gosub 21915  : _        'Pe 01/19/93
  1043.               ZOutTxt$ = ZFileName$ + OutTxt$ _
  1044.                          + STR$(ZWasA) + "  have" + STR$(Temp) : _
  1045.               CALL UpdtCalr (ZOutTxt$,2) : _
  1046.            WEND : _
  1047.            CLOSE 2 : _
  1048.             X = 188 : _              'Pe 01/19/93
  1049.              Gosub 21915  : _        'Pe 01/19/93
  1050.            ZOutTxt$ = OutTxt$  _
  1051.                        + STR$(ZWasA) + "  have" + STR$(Temp) : _
  1052.            CALL QuickTPut1 (ZOutTxt$)
  1053.       CALL DelayTime (3)
  1054.       IF ZDownFiles < 2 THEN _
  1055.          GOTO 20792
  1056.       ZLastIndex = 0
  1057.        X = 189              'Pe 01/19/93
  1058.        Gosub 21915        'Pe 01/19/93
  1059.       ZOutTxt$ = OutTxt$
  1060.       ZTurboKey = - ZTurboKeyUser
  1061.       GOSUB 21668
  1062.       IF ZNo THEN _
  1063.          LastDnld = 0 : _
  1064.          GOTO 20792
  1065.       Temp = 0
  1066.       CALL OpenWork (2,ZNodeWorkFile$)
  1067.       WHILE NOT EOF(2)
  1068.          CALL ReadDir (2,1)
  1069.          CALL BreakFileName (ZOutTxt$,DR$,ZWasY$,WasX$,ZTrue)
  1070.          ZFileName$ = ZWasY$ + WasX$
  1071.          ZOutTxt$ = "Download " + ZFileName$ + " (Y,[N])"
  1072.          ZTurboKey = - ZTurboKeyUser
  1073.          GOSUB 21668
  1074.          IF ZYes THEN _
  1075.             Temp = Temp + 1 : _
  1076.             ZOutTxt$(Temp) = ZFileName$
  1077.       WEND
  1078.       CLOSE 2
  1079.       ZAnsIndex = 1
  1080.       ReStart = (Temp > 0)
  1081.       LastDnld = Temp
  1082.       ZLastIndex = Temp
  1083.       FOR WasX = 1 TO Temp
  1084.          ZUserIn$(WasX) = ZOutTxt$(WasX)
  1085.       NEXT
  1086. * REPLACING old line(s) by new
  1087. 20793 IF ZRatioRestrict# > 0 THEN _
  1088. * ------[ first line different ]------
  1089.        X = 190 : _              'Pe 01/19/93
  1090.        Gosub 21915  : _        'Pe 01/19/93
  1091.          CALL QuickTPut1 (OutTxt$) : _
  1092.          CALL CheckRatio (ZTrue)
  1093.       CALL AutoLogoff
  1094.       IF ZAutoEnd = 2 THEN _
  1095.       ZOK = ZFalse
  1096.       RETURN
  1097. * REPLACING old line(s) by new
  1098. 20851 ZWasY$ = ""
  1099.       CALL CheckCarrier
  1100.       IF ZSubParm = -1 THEN _
  1101.          ZFileSysParm = 7 : _
  1102.          RETURN
  1103.       RETURN
  1104. '
  1105. * ------[ first line different ]------
  1106. ' *  CHANGE TO 8 BIT FOR Xmodem
  1107. '
  1108. * DELETING old line(s)
  1109. 20860
  1110. 20900
  1111. 20903
  1112. 20920
  1113. 20922
  1114. 20930
  1115. 20960
  1116. 20970
  1117. 20990
  1118. * REPLACING old line(s) by new
  1119. 20996 WasSO = 0
  1120.       RETURN
  1121. '
  1122. * ------[ first line different ]------
  1123. ' STANDARD ENTRY FOR RBBS-PC'S COMMON TERMINAL OUTPUT ROUTINE
  1124. '
  1125. ' Modeled on lines 12975 to 12983 in RBBS-PC.BAS
  1126. * DELETING old line(s)
  1127. 20999
  1128. 21000
  1129. 21020
  1130. 21040
  1131. 21050
  1132. 21060
  1133. 21070
  1134. 21080
  1135. 21090
  1136. 21100
  1137. 21110
  1138. 21113
  1139. 21120
  1140. 21131
  1141. 21145
  1142. 21150
  1143. 21170
  1144. 21180
  1145. 21190
  1146. 21191
  1147. 21200
  1148. 21210
  1149. 21212
  1150. 21220
  1151. 21225
  1152. 21230
  1153. 21240
  1154. 21250
  1155. 21280
  1156. 21281
  1157. 21300
  1158. 21303
  1159. 21350
  1160. 21360
  1161. 21380
  1162. 21390
  1163. 21410
  1164. 21415
  1165. 21420
  1166. 21440
  1167. 21443
  1168. 21445
  1169. 21450
  1170. 21455
  1171. 21460
  1172. 21470
  1173. 21480
  1174. 21490
  1175. 21503
  1176. 21504
  1177. 21510
  1178. 21530
  1179. 21531
  1180. 21540
  1181. 21545
  1182. 21550
  1183. 21560
  1184. 21561
  1185. * REPLACING old line(s) by new
  1186. 21720 CALL LPrnt (WasD$,NumReturns)
  1187.       RETURN
  1188. '
  1189. * ------[ first line different ]------
  1190. ' * UPDATE DOWNLOAD STATISTICS
  1191. '
  1192. '  (formerly lines 50600 to 50614 in RBBS-PC.BAS
  1193. * DELETING old line(s)
  1194. 21750
  1195. * REPLACING old line(s) by new
  1196. 21760 GOSUB 21780
  1197.       IF ZFileSysParm > 1 THEN _
  1198.          RETURN
  1199.       IF ZBatchTransfer THEN _
  1200.          CALL LinesInFile (ZNodeWorkFile$,ZDownFiles) _
  1201.       ELSE ZDownFiles = 1
  1202. * ------[ first line different ]------
  1203.       IF NOT ZDnldCompleted THEN _     'Pe 05/31/91
  1204.          ZAutoLogoffReq = ZFalse : _
  1205.          ZWasDF$ = " Aborted" : _
  1206.          GOTO 21770
  1207.       CALL LogPDown (ZPersonalDnld,1+ZAnsIndex-FirstDnld)
  1208.       WasX = ((ZRatioRestrict# > 0) AND ZEnforceRatios AND ZFreeDnld)
  1209.       IF NOT WasX THEN _
  1210.          ZDnlds = ZDnlds + ZDownFiles : _
  1211.          ZGlobalDLToday! = ZGlobalDLToday! + ZDownFiles : _
  1212.          ZGlobalDnlds = ZGlobalDnlds + ZDownFiles : _
  1213.          ZDLBytes! = ZDLBytes! + ZNumDnldBytes! : _
  1214.          ZGlobalDLBytes! = ZGlobalDLBytes! + ZNumDnldBytes! : _
  1215.          ZDLToday! = ZDLToday! + ZDownFiles : _
  1216.          ZBytesToday! = ZBytesToday! + ZNumDnldBytes! : _
  1217.          ZGlobalBytesToday! = ZGlobalBytesToday! + ZNumDnldBytes!
  1218.       ZNumDnldBytes! = 0
  1219.       ZWasDF$ = " Downloaded"
  1220.       IF (ZAnsIndex = LastDnld OR NOT ZConcatFIles) THEN _
  1221.          CALL SkipLine (1) : _
  1222.        X = 191 : _              'Pe 01/19/93
  1223.        Gosub 21915  : _        'Pe 01/19/93
  1224.          CALL QuickTPut1 (OutTxt$)
  1225.          IF WasX THEN _
  1226.        X = 192 : _              'Pe 01/19/93
  1227.        Gosub 21915  : _        'Pe 01/19/93
  1228.             CALL QuickTPut1 (OutTxt$)
  1229. * DELETING old line(s)
  1230. 21768
  1231. * REPLACING old line(s) by new
  1232. * ------[ first line different ]------
  1233. 21773 IF ZTransferFunction = 1 THEN
  1234.      CALL BreakFileName (ZFileName$,DR$,WasX$,Extension$,ZTrue)
  1235.       ZWasZ$ = WasX$ + _
  1236.            Extension$ + _
  1237.            ZWasDF$ + _
  1238.            " at " + _
  1239.            ZTime$ + _
  1240.            " using " + _
  1241.            ZWasFT$ + _
  1242.            STR$(ZBytesInFile#)
  1243.       CALL UpdtCalr (ZWasZ$,2)
  1244.          IF  ZWasDF$ = " Downloaded" Then          'Pe021593
  1245.         Call MenuPlus (9)                          'Pe021593
  1246.       END IF                                       'Pe021593
  1247.    END IF
  1248.       IF ZBatchTransfer THEN _
  1249.          ZWasQ = ZWasQ - 1 : _
  1250.          GOTO 21772
  1251.       'CALL CheckRatio (ZFalse)
  1252. * REPLACING old line(s) by new
  1253. * ------[ first line different ]------
  1254. 21774  RETURN
  1255. '
  1256. '
  1257. ' *****   TURN ON INTERMEDIATE ECHO   ****
  1258. '
  1259. '  (formerly line 50620 in RBBS-PC.BAS
  1260. * REPLACING old line(s) by new
  1261. * ------[ first line different ]------
  1262. 21790  Call CheckCarrier                  'Pe 12/31/91
  1263.       IF ZSubParm = -1 THEN _             'Pe 12/31/91
  1264.          ZFileSysParm = 7 : _             'Pe 12/31/91
  1265.        Return                             'Pe 12/31/91
  1266.        IF ZEchoer$ = "I" THEN _
  1267.          CALL SetEcho ("R")
  1268.       RETURN
  1269. '
  1270. ' *****   DIRECTORY SEARCH   ****
  1271. '
  1272. '  (formerly lines 52900 to 52920 in RBBS-PC.BAS
  1273. * REPLACING old line(s) by new
  1274. * ------[ first line different ]------
  1275. 21810 X = 193              'Pe 01/19/93
  1276.        Gosub 21915        'Pe 01/19/93
  1277.        ZOutTxt$ = OutTxt$
  1278.       ZMacroMin = 99
  1279.       GOSUB 21668
  1280.       IF ZWasQ = 0 THEN _
  1281.          RETURN
  1282. * REPLACING old line(s) by new
  1283. 21820 WasRS$ = ZUserIn$(ZAnsIndex)
  1284.       WildSearch = (INSTR(WasRS$,"*") > 0 OR INSTR(WasRS$,"?") > 0)
  1285.       CALL AllCaps (WasRS$)
  1286.       IF RIGHT$(WasRS$,1) = "*" THEN _
  1287.          IF RIGHT$(WasRS$,2) <> ".*" THEN _
  1288.             WasRS$ = WasRS$ + ".*"
  1289.       SearchString$ = WasRS$
  1290.       SearchDate$ = ""
  1291.       ZJumpSearching = ZFalse
  1292.       WasA1$ = WasRS$
  1293. * ------[ first line different ]------
  1294.       ZExtendedOff = ZFalse 'ZTrue       'Pe 10/27/91
  1295.       GOTO 21867
  1296. '
  1297. ' *****  P - personal download  ****
  1298. '
  1299. '  (formerly lines 52950 to 52952 in RBBS-PC.BAS
  1300. * REPLACING old line(s) by new
  1301. * ------[ first line different ]------
  1302. 21854 RETURN
  1303. '
  1304. ' *  WasN - COMMAND FROM FILES MENU (DISPLAY NEW FILES SINCE Last DIR DISPLAY)
  1305. '
  1306. '  (formerly lines 53000 to 53070 in RBBS-PC.BAS
  1307. * REPLACING old line(s) by new
  1308. 21862 WasA1$ = RIGHT$(ZWasLM$,4) +_
  1309.             LEFT$(ZWasLM$,2)
  1310. * ------[ first line different ]------
  1311.        X = 194              'Pe 01/19/93
  1312.        Gosub 21915        'Pe 01/19/93
  1313.       ZOutTxt$ = OutTxt$ + WasA1$
  1314.       GOSUB 21668
  1315.       CALL AraAllCaps (ZUserIn$(),ZAnsIndex)
  1316.       IF ZWasQ = 0 OR ZUserIn$(ZAnsIndex) = "S" THEN _
  1317.          WasRS$ = ZWasLM$ : _
  1318.          GOTO 21866
  1319. * REPLACING old line(s) by new
  1320. 21866 SearchDate$ = WasRS$
  1321.       SearchString$ = ""
  1322.       ZJumpSearching = ZFalse
  1323. * ------[ first line different ]------
  1324.       ZExtendedOff = ZFalse 'ZTrue             'Pe 10/27/91
  1325.       ZUserIn$(ZAnsIndex) = "A"
  1326.        ZEndList = ZTrue          'Pe 12/01/91
  1327.        GOTO 21871                'Pe NewFile mod
  1328. * REPLACING old line(s) by new
  1329. * ------[ first line different ]------
  1330. 21867 CALL GetDirs (ZFalse)
  1331.       IF ZWasQ = 0 THEN _
  1332.          RETURN
  1333. * REPLACING old line(s) by new
  1334. 21880 WasQX = ZAnsIndex
  1335.       GOSUB 20157
  1336.       IF ZFileSysParm > 1 THEN _
  1337.          RETURN
  1338.       ZAnsIndex = ZAnsIndex + 1
  1339.       IF ZAnsIndex <= ZLastIndex THEN _
  1340.          GOTO 21875
  1341.       ListNew = ZFalse
  1342. * ------[ first line different ]------
  1343.       ZEndList = ZFalse       'Pe 12/01/91
  1344.       SearchString$ = ""
  1345.       SearchDate$ = ""
  1346.       RETURN
  1347. * REPLACING old line(s) by new
  1348. * ------[ first line different ]------
  1349. 21895  X = 195              'Pe 01/19/93
  1350.        Gosub 21915        'Pe 01/19/93
  1351.        CALL QuickTPut1 (OutTxt$)
  1352.        RETURN
  1353. '
  1354. ' *  MAIN FILE SYSTEM ERROR TRAP - ALL ERRORS PASS THROUGH THIS ROUTINE
  1355. '
  1356. '  (formerly lines 13000 to 13500 in RBBS-PC.BAS
  1357. * REPLACING old line(s) by new
  1358. 21900 IF ZDebug THEN _
  1359.          ZOutTxt$ = "RBBSSUB5 DEBUG Error Trap Entry ERL=" + _
  1360. * ------[ first line different ]------
  1361.              STR$(ZWasEL) + _
  1362.               " ERR=" + _
  1363.               STR$(ZErrCode) : _
  1364.          IF ZPrinter THEN _
  1365.             CALL Printit(ZOutTxt$) _
  1366.          ELSE CALL LPrnt(ZOutTxt$,1)
  1367.       IF ZWasEL = 20126 AND ZErrCode = 53 THEN _
  1368.          GOTO 20142
  1369.       IF ZWasEL = 20242 AND ZErrCode = 62 THEN _
  1370.          CALL UpdtCalr (ZFileSecFile$ + " bad format!",2) : _
  1371.          GOTO 20247
  1372.       IF ZWasEL = 20263 THEN _
  1373.          ZOutTxt$ = "<Download aborted>" : _
  1374.          ZDnldCompleted = ZFalse : _          'Pe
  1375.          ZAutoLogoffReq = ZFalse : _
  1376.          ZAutoEnd = 3 : _
  1377.          GOTO 20390
  1378.       IF ZWasEL = 20560 AND ZErrCode = 67 THEN _
  1379.          GOTO 20451
  1380.       IF ZWasEL = 20560 AND ZErrCode = 70 THEN _
  1381.          IF VAL(ZFreeSpace$) > 1999 THEN _
  1382.             GOTO 20610 _
  1383.          ELSE GOSUB 21895 : _
  1384.               GOTO 21700
  1385.       IF ZWasEL = 20620 THEN _
  1386.          GOTO 20670
  1387.       IF ZWasEL = 20650 THEN _
  1388.          GOTO 20670
  1389.       IF ZWasEL = 20736 AND ZErrCode = 53 THEN _
  1390.          GOTO 21700
  1391. * INSERTING new line(s)
  1392. 21915 Call GetRBBSString(X,RBBSString$)      'Pe 01/16/93
  1393.       OutTxt$ = RBBSString$                 'Pe 01/16/93
  1394.       Return
  1395. * REPLACING old line(s) by new
  1396. 63100 ' $SUBTITLE: 'DoorReturn - Subroutine to process requests from a door'
  1397. ' $PAGE
  1398. '
  1399. '  NAME    -- DoorReturn
  1400. '
  1401. '  INPUTS  -- PARAMETER                      MEANING
  1402. '             DOUTx.DEF               File of requests
  1403. '
  1404. '  OUTPUTS -- ZUserSecLevel     Revised Security Level
  1405. '
  1406. '  PURPOSE -- To give Doors a stable way to make requests
  1407. '             to the host.
  1408. '
  1409.       SUB DoorReturn STATIC
  1410.       IF NOT ZExitToDoors THEN _
  1411.          EXIT SUB
  1412.       CALL OpenUser (ZHighestUserRecord)
  1413.       FIELD 5, 128 AS ZUserRecord$
  1414.       FIELD 5,31 AS ZUserName$, _
  1415.               15 AS ZPswd$, _
  1416.                2 AS ZSecLevel$, _
  1417.               14 AS ZUserOption$,  _
  1418.               24 AS ZCityState$, _
  1419.                2 AS MachineType$, _
  1420.                1 AS ZBankTime$,_
  1421.                4 AS ZTodayDl$, _
  1422.                4 AS ZTodayBytes$, _
  1423.                4 AS ZDlBytes$, _
  1424.                4 AS ZULBytes$, _
  1425.               14 AS ZLastDateTimeOn$, _
  1426.                3 AS ZListNewDate$, _
  1427.                2 AS ZUserDnlds$, _
  1428.                2 AS ZUserUplds$, _
  1429.                2 AS ZElapsedTime$
  1430.       ZSubParm = 6
  1431.       CALL FileLock
  1432.       GET 5,ZUserFileIndex
  1433.       ZTimesLoggedOn = CVI(MID$(ZUserOption$,1,2))
  1434. * ------[ first line different ]------
  1435.       IF ZDoorDropFile$ = "R" THEN _                                 ' DD012702/DOORS
  1436.          CALL ReadDoorSys                                            ' DD012702/DOORS
  1437.       CALL SetSysOp
  1438.       CALL SetUserPref
  1439.       CALL SetUserUpDn
  1440.       ZGlobalsSet = ZFalse
  1441.       CALL SetGlobalUpDn
  1442.       ZElapsedTime = CVI(MID$(ZUserRecord$,127,2))
  1443.       IF ZDoorDropFile$ = "R" THEN _                                 ' DD012702/DOORS
  1444.          ZErrCode = 0 : _                                            ' DD012702/DOORS
  1445.          PUT 5,ZUserFileIndex                                        ' DD012702/DOORS
  1446.       ZFileName$ = "DOUT" + ZNodeID$ + ".DEF"
  1447.       CALL FindIt (ZFileName$)
  1448.       IF NOT ZOK THEN _
  1449.          GOTO 63197
  1450. * REPLACING old line(s) by new
  1451. 63110 WasX$ = LEFT$(ZOutTxt$(2),1)         ' ZWasSL = Security Level
  1452.       CALL CheckInt (ZOutTxt$(2))
  1453.       IF ZErrCode > 0 THEN _
  1454.          GOTO 63105
  1455.       IF WasX$ = "+" OR WasX$ = "-" THEN _
  1456.          ZWasA = ZUserSecLevel + ZTestedIntValue _
  1457.       ELSE ZWasA = ZTestedIntValue
  1458.       IF ZWasA < ZSysopSecLevel THEN _
  1459.          ZAdjustedSecurity = (ZWasA <> ZUserSecLevel) : _
  1460.          IF ZAdjustedSecurity THEN _
  1461. * ------[ first line different ]------
  1462.            Call MenuPlus (10) : _                    ' Pe Menu174
  1463.             ZUserSecLevel = ZWasA : _
  1464.             MID$(ZUserRecord$,47,2) = MKI$(ZWasA) : _
  1465.             Call GetRBBSString(196,RBBSString$) : _      'Pe 01/16/93
  1466.             OutTxt$ = RBBSString$ : _                'Pe 01/16/93
  1467.             CALL QuickTPut1 (OuTxt$ + STR$(ZWasA)) : _
  1468.             Call GetRBBSString(197,RBBSString$) : _      'Pe 01/16/93
  1469.             OutTxt$ = RBBSString$ : _                'Pe 01/16/93
  1470.             CALL UpdtCalr (OutTxt$+STR$(ZWasA),2)
  1471.       GOTO 63105
  1472. * REPLACING old line(s) by new
  1473. 63320 ' $SUBTITLE: 'ShellExit - sub to shell out from RBBS'
  1474. ' $PAGE
  1475. '
  1476. '  NAME    -- ShellExit
  1477. '
  1478. '  INPUTS  -- ShellTem$     String to invoke shell with
  1479. '
  1480. '  OUTPUTS -- none
  1481. '
  1482. '  PURPOSE -- Delay so that strings can finish printing.  Restore comm
  1483. '             port on return
  1484. '
  1485.       SUB ShellExit (ShellTem$) STATIC
  1486. * ------[ first line different ]------
  1487.       CALL DelayTime (4 + ZBPS)   'Pe 08/12/91
  1488.       IF NOT ZLocalUser THEN _
  1489.          IF ZFossil THEN _
  1490.             CALL FOSExit(ZComPort) _
  1491.          ELSE CLOSE 3 : _
  1492.               OUT ZModemCntlReg,INP(ZModemCntlReg) OR 1
  1493.       CLOSE 2
  1494.       CALL MetaGSR (ShellTem$,ZFalse)
  1495.       SHELL ShellTem$
  1496.       IF ZFossil THEN _
  1497.          IF NOT ZLocalUser THEN _
  1498.             CALL FOSinit(ZComPort,Result) : _
  1499.             IF Result = -1 THEN _
  1500.                CALL PScrn("ERROR INIT FOSSIL AFT EXTERNAL") : _
  1501.                SYSTEM
  1502.       CALL DelayTime (2)
  1503.       CALL RestoreCom
  1504.       END SUB
  1505. * REPLACING old line(s) by new
  1506. * ------[ first line different ]------
  1507. 63355 CALL GlobalSrchRepl (WasX$,"|",ZCarriageReturn$,ZTrue)        ' KG011201
  1508.       ZCommPortStack$ = ZCommPortStack$ + WasX$ + ZCarriageReturn$  ' STack
  1509.       GOTO 63336
  1510. * REPLACING old line(s) by new
  1511. * ------[ first line different ]------
  1512. 63396 CALL SmartText (ZOutTxt$,ZFalse, OverStrike,ZFalse)   'Pe 02/06/93
  1513.       CALL MetaGSR (ZOutTxt$,OverStrike)
  1514.       RETURN
  1515. * REPLACING old line(s) by new
  1516. 63397 IF EOF(6) THEN _         ' Read next line in macro
  1517. * ------[ first line different ]------
  1518.               ZMacroActive = ZFalse _
  1519.       ELSE CALL ReadDir (6,1) : _
  1520.            ZMacroActive = (ZErrCode = 0)
  1521.       RETURN
  1522. * REPLACING old line(s) by new
  1523. 63400 ' $SUBTITLE: 'LockAppend - prepares for file append'
  1524. ' $PAGE
  1525. '
  1526. '  NAME    -- LockAppend
  1527. '
  1528. '  INPUTS  -- ZWasEN$            Name of file to append to
  1529. '
  1530. '  OUTPUTS -- none
  1531. '
  1532. '  PURPOSE -- Locks and opens file to append to
  1533. '
  1534.       SUB LockAppend STATIC
  1535. * ------[ first line different ]------
  1536. IF ZNetWorkType <> 0 Then _       'Pe 04/04/92
  1537.       WasBX = &H4 : _            'Pe 03/16/92
  1538.       ZSubParm = 9 : _           'Pe 03/16/92
  1539.       CALL FileLock
  1540.       ZErrCode = 0
  1541.       CALL OpenWorkA (ZWasEN$)
  1542.       END SUB
  1543. * REPLACING old line(s) by new
  1544. 63410 ' $SUBTITLE: 'UnLockAppend - cleans up after file append'
  1545. ' $PAGE
  1546. '
  1547. '  NAME    -- UnLockAppend
  1548. '
  1549. '  INPUTS  -- none
  1550. '
  1551. '  OUTPUTS -- none
  1552. '
  1553. '  PURPOSE -- Unlocks and close file appending to
  1554. '
  1555.       SUB UnLockAppend STATIC
  1556. * ------[ first line different ]------
  1557. IF ZNetWorkType <> 0 Then _       'Pe 04/04/92
  1558.       WasBX = &H4 : _            'Pe 03/16/92
  1559.       ZSubParm = 10 : _          'Pe 03/16/92
  1560.       CALL FileLock
  1561.       CLOSE 2
  1562.       END SUB
  1563. * REPLACING old line(s) by new
  1564. 63422 IF EOF(2) OR ZNo OR (ZErrCode > 0) OR (ZSubParm < 0) THEN _
  1565.          Template$ = "" : _
  1566.          EXIT SUB
  1567.       IF FixedLength THEN _
  1568.          CALL ReadDir (2,1) : _
  1569.          ZGSRAra$(1) = ZOutTxt$ _
  1570.       ELSE CALL ReadParms (ZGSRAra$(),DataVar,1)
  1571.       WasX$ = Template$
  1572. * ------[ first line different ]------
  1573.       CALL SmartText (WasX$,ZTrue,OverStrike,ZFalse)  ' Pe 02/06/93
  1574.       CALL MetaGSR (WasX$,OverStrike)
  1575.       CALL BufAsUnit (WasX$)
  1576.       IF RecPause OR (ZPageLength > 0 AND (ZLinesPrinted >= ZPageLength-1)) THEN _
  1577.          CALL PauseExit : _
  1578.          EXIT SUB
  1579.       GOTO 63422
  1580.       END SUB
  1581. * REPLACING old line(s) by new
  1582. 63465 ' Forces a keyboard pause inside a macro
  1583.       SUB PauseExit STATIC
  1584.       ZSubParm = 4
  1585.       ZTurboKey = -ZTurboKeyUser
  1586. * ------[ first line different ]------
  1587.       ZOutTxt$ = ZMorePrompt$ + LEFT$(">",-1*ZExpertUser) + MID$("? : ",2*ZTurboKey+1,2) ' TC041610
  1588.       ZForceKeyboard = ZTrue
  1589.       ZNoAdvance = ZTrue
  1590.       CALL TPut
  1591.       ZLinesPrinted = 0
  1592.       ZUserIn$ = ""
  1593.       END SUB
  1594. * REPLACING old line(s) by new
  1595. 63470 ' $SUBTITLE: 'SetPrompt - sub to set prompts based on user security'
  1596. ' $PAGE
  1597. '
  1598. '  NAME    -- SetPrompt
  1599. '
  1600. '  INPUTS  -- PARAMETER           MEANING
  1601. '             ZBegMain          POSITION START OF MAIN CMDS
  1602. '             ZBegFile          POSITION START OF FILE CMDS
  1603. '             ZBegUtil          POSITION START OF UTIL CMDS
  1604. '             ZBegLibrary       POSITION START OF Library CMDS
  1605. '
  1606. '  OUTPUTS -- PRESENT.OPTS$         DISPLAY WHAT USER CAN DO (1st)
  1607. '             CALLERS.OPTS$         DISPLAY WHAT USER CAN DO (2nd)
  1608. '             ZMainOpts$            MAIN OPTS USER CAN DO
  1609. '             ZFileOpts$            FILE OPTS USER CAN DO
  1610. '             ZUtilOpts$            UTIL OPTS USER CAN DO
  1611. '             ZLibOpts$         Library OPTS USER CAN DO
  1612. '
  1613. '  PURPOSE -- Sets command line display of what user can do by
  1614. '             section and display of what all user can do
  1615. '
  1616.       SUB SetPrompt STATIC
  1617.       First = ZBegMain
  1618.       Last = ZBegFile - 1
  1619.       CALL SetOpts (ZMainOpts$,ZInvalidMainOpts$,First,Last)
  1620.       First = ZBegFile
  1621.       Last = ZBegUtil - 1
  1622.       CALL SetOpts (ZFileOpts$,ZInvalidFileOpts$,First,Last)
  1623.       First = ZBegUtil
  1624.       Last = ZBegLibrary - 1
  1625.       CALL SetOpts (ZUtilOpts$,ZInvalidUtilOpts$,First,Last)
  1626.       First = ZBegLibrary
  1627.       Last = ZBegLibrary + 6
  1628.       CALL SetOpts (ZLibOpts$,ZInvalidLibraryOpts$,First,Last)
  1629.       First = 50
  1630.       Last = 56
  1631.       CALL SetOpts (SysOpt$,ZInvalidSysOpts$,First,Last)
  1632.       First = 46
  1633.       Last = 49
  1634.       CALL SetOpts (GlobalOpts$,InvalidGlobalOpts$,First,Last)
  1635.       IF LEN(SysOpt$) > 0 THEN _
  1636.          ZSystemOpts$ = "Sysop: " + _
  1637.                         SysOpt$
  1638.       ZMainOpts$ = GlobalOpts$ + ZMainOpts$ + _
  1639.                    MID$(ZAllOpts$,INSTR(ZOrigCommands$,"G"),1)
  1640.       ZFileOpts$ = GlobalOpts$ + _
  1641.                    ZFileOpts$
  1642.       ZUtilOpts$ = GlobalOpts$ + _
  1643.                    ZUtilOpts$
  1644.       ZLibOpts$ = GlobalOpts$ + _
  1645.                       ZLibOpts$
  1646.       CALL SortString (SysOpt$)
  1647.       CALL SortString (ZMainOpts$)
  1648.       ZMainOpts$ = ZMainOpts$ + _
  1649.                    SysOpt$
  1650.       CALL SortString (ZFileOpts$)
  1651.       CALL SortString (ZUtilOpts$)
  1652.       CALL SortString (ZLibOpts$)
  1653.       CALL AddCommas (ZMainOpts$)
  1654.       CALL AddCommas (ZFileOpts$)
  1655.       CALL AddCommas (ZUtilOpts$)
  1656.       CALL AddCommas (ZLibOpts$)
  1657.       ZDirPrompt$ = "What directory(s) (" + _
  1658. * ------[ first line different ]------
  1659.          MID$("U)pload,A)ll,P)ers,L)ist,E)xtra,[Q]uit)",8 * (ZUserSecLevel => ZMinSecToView) + 9)
  1660.       ZQuitPromptExpert$ = "QUIT C,S, or to F,[M],U"
  1661.       ZQuitPromptNovice$ = "QUIT C)onference, S)ession or to section " + _
  1662.                             "F)ile, [M]ain, U)til"
  1663.       ZQuitList$ = "FMUS@C"
  1664.       IF ZUserSecLevel < ZOptSec(18) THEN _
  1665.          ZQuitPromptExpert$ = LEFT$(ZQuitPromptExpert$,23) : _
  1666.          ZQuitPromptNovice$ = LEFT$(ZQuitPromptNovice$,61) : _
  1667.          MID$(ZQuitList$,5) = " "
  1668.       IF ZUserSecLevel < ZOptSec(15) THEN _
  1669.          ZQuitPromptExpert$ = LEFT$(ZQuitPromptExpert$,22) + _
  1670.                                MID$(ZQuitPromptExpert$,25) : _
  1671.          ZQuitPromptNovice$ = LEFT$(ZQuitPromptNovice$,56) + _
  1672.                                MID$(ZQuitPromptNovice$,63) : _
  1673.          MID$(ZQuitList$,3,1) = " "
  1674.       IF ZUserSecLevel < ZOptSec(6) THEN _
  1675.          ZQuitPromptExpert$ = LEFT$(ZQuitPromptExpert$,16) + _
  1676.                                MID$(ZQuitPromptExpert$,19) : _
  1677.          ZQuitPromptNovice$ = LEFT$(ZQuitPromptNovice$,41) + _
  1678.                                MID$(ZQuitPromptNovice$,49) : _
  1679.          MID$(ZQuitList$,1,1) = " "
  1680.       CALL SetSection
  1681.       END SUB
  1682. * REPLACING old line(s) by new
  1683. 63540 ' Match Name to one in message file
  1684.       SUB ChkMsgName (MsgFromCaller,MsgToCaller) STATIC
  1685. * ------[ first line different ]------
  1686.      IF ZNewUserDGS THEN _                                        'DGS-NEW
  1687.         CALL MsgNameMatch ("NEWUSER",ZActiveUserName$,6,MsgFromCaller) : _      'DGS-NEW
  1688.         CALL MsgNameMatch ("NEWUSER",ZActiveUserName$,37,MsgToCaller) : _       'DGS-NEW
  1689.      Exit Sub
  1690.       IF NOT ZRemoteSysop THEN _
  1691.          WasX$ = LEFT$("SYSOP",-5*ZSysop) : _
  1692.          CALL MsgNameMatch (ZorigUserName$,ZActiveUserName$,6,MsgFromCaller) : _ 'Dgs-ALSMod
  1693.          CALL MsgNameMatch (ZorigUserName$,ZActiveUserName$,37,MsgToCaller)  : _    'Dgs-ALSMod
  1694.          EXIT SUB
  1695.       CALL MsgNameMatch ("SYSOP",ZSysopFullName$,6,MsgFromCaller)
  1696.       IF NOT MsgFromCaller THEN _
  1697.          CALL MsgNameMatch (ZOrigUserName$,"",6,MsgFromCaller)
  1698.       CALL MsgNameMatch ("SYSOP",ZSysopFullName$,37,MsgToCaller)
  1699.       IF NOT MsgToCaller THEN _
  1700.          CALL MsgNameMatch (ZOrigUserName$,"",37,MsgToCaller)
  1701.       END SUB
  1702.       SUB MsgNameMatch (PrimeName$,AltName$,SearchPos,Found) STATIC
  1703.       WasX$ = LEFT$(PrimeName$+"  ",22-8*(SearchPos < 7))
  1704.       GOSUB 63542
  1705.       IF Found OR AltName$ = "" THEN _
  1706.          EXIT SUB
  1707.       WasX$ = LEFT$(AltName$ + "  ",22-8*(SearchPos < 7))
  1708.       GOSUB 63542
  1709.       EXIT SUB
  1710. * REPLACING old line(s) by new
  1711. 63542 WasY$ = MID$(ZMsgRec$,SearchPos,LEN(WasX$))
  1712. * ------[ first line different ]------
  1713.       CALL SmartText(WasY$,ZFalse, OverStrike,ZFalse)   'Pe 02/05/93
  1714.       CALL AllCaps(WasY$)                'SM091908
  1715.       WasY$ = LEFT$(WasY$,LEN(WasX$))            'SM091908
  1716.       ZWasDF = INSTR(WasY$,"@")
  1717.       IF ZWasDF > 0 THEN _
  1718.          MID$(WasY$,ZWasDF) = "      "
  1719.       Found = (WasY$ = WasX$)
  1720.       RETURN
  1721.       END SUB
  1722. * REPLACING old line(s) by new
  1723. 63560 ' Set specified user flag
  1724.       SUB SetUserFlag (RcvrRecNum, ChangeIndex, WhatGetting$) STATIC
  1725.       FIELD #5, 128 AS ZUserRecord$
  1726.       IF RcvrRecNum > 0 THEN _
  1727.          ZUserFileIndex = RcvrRecNum : _
  1728.          ZSubParm = 6 : _
  1729.          CALL FileLock : _
  1730.          GET 5, RcvrRecNum : _
  1731.          WasX = CVI(MID$(ZUserRecord$,57,2)) : _
  1732.          MID$(ZUserRecord$,57,2) = MKI$(WasX OR ChangeIndex) : _
  1733.          PUT 5, RcvrRecNum : _
  1734.          ZSubParm = 8 : _
  1735.          CALL FileLock : _
  1736. * ------[ first line different ]------
  1737.          Call GetRBBSString(198,RBBSString$) : _      'Pe 01/16/93
  1738.           OutTxt$ = RBBSString$ : _                'Pe 01/16/93
  1739.          CALL QuickTPut1 (ZWorkAra$(1) + OutTxt$ + " " + WhatGetting$) : _
  1740.          RcvrRecNum = 0
  1741.       END SUB
  1742. * REPLACING old line(s) by new
  1743. 63580 ' Displays user record
  1744.       SUB DispUserRec (ToPrint) STATIC
  1745.          ZOK = ZFalse
  1746.          WasX$ = MID$(ZUserRecord$,ZStartHash,ZLenHash)
  1747.          IF ASC(WasX$) = 0 OR LEFT$(WasX$,3) = "   " THEN _
  1748.             EXIT SUB
  1749.          WasOF = CVI(ZSecLevel$)
  1750.          IF WasOF > ZUserSecLevel THEN _
  1751.             IF NOT ZGlobalSysop THEN _
  1752.                EXIT SUB
  1753.          ZOutTxt$ = ZFG4$ + RIGHT$("     " + STR$(LOC(5)),4) + _
  1754.               ":" + _
  1755.               ZFG1$ + ZUserName$ + _
  1756.               ZFG2$ + "SECURITY" + _
  1757.               RIGHT$("      " + STR$(WasOF),6) + _
  1758.               " "
  1759. * ------[ first line different ]------
  1760.          IF WasOF < ZSysopSecLevel THEN _                           'ST120501
  1761.          ZOutTxt$ = ZOutTxt$ + _
  1762.               ZFG3$ + "Password= " + _
  1763.               ZPswd$ + ZEmphasizeOff$
  1764.          GOSUB 63583
  1765.          IF WasOF < ZOrigMainSec THEN _
  1766.             ZOutTxt$ = ZEmphasizeOn$ + "<Locked out>" + ZEmphasizeOff$ + SPACE$(7) _
  1767.          ELSE IF WasOF >= ZSysopSecLevel THEN _
  1768.             ZOutTxt$ = ZEmphasizeOn$ + "  (SysOp)  " + ZEmphasizeOff$ + SPACE$(8) _
  1769.          ELSE ZOutTxt$ = SPACE$(19)
  1770.          ZOutTxt$ = ZOutTxt$ + _
  1771.               ZLastDateTimeOn$ + _
  1772.              "   " + _
  1773.              ZFG4$ + ZCityState$ + ZEmphasizeOff$
  1774.          GOSUB 63583
  1775.          ZOutTxt$ = "  DOWNLOADS = " + _
  1776.              RIGHT$("     " + STR$(CVI(ZUserDnlds$)),5) + _
  1777.              "   " + _
  1778.              "UPLOADS = " + _
  1779.              RIGHT$("     " + STR$(CVI(ZUserUplds$)),5) + _
  1780.              "   " + _
  1781.              " Times on ="
  1782.           ZOutTxt$ = ZOutTxt$ + RIGHT$("     " + STR$(CVI(MID$(ZUserOption$,1,2))),5) + _
  1783.              "   TIME USED= " + _
  1784.              STR$(CVI(ZElapsedTime$)) + _
  1785.              " Min"
  1786.          GOSUB 63583
  1787.          ZOutTxt$ = "  Bank Time : " +_
  1788.             RIGHT$("     " + STR$(ASC(ZBankTime$)),5)
  1789.          GOSUB 63583
  1790.          IF NOT ZEnforceRatios THEN _
  1791.             GOTO 63581
  1792.          ZOutTxt$ = "BYTES: Dwn=" + STR$(CVS(ZDlBytes$)) + _
  1793.               "  Up=" + STR$(CVS(ZULBytes$)) + _
  1794.               " TODAY Dwn: #=" + STR$(CVS(ZTodayDl$)) + _
  1795.               " Bytes=" + STR$(CVS(ZTodayBytes$))
  1796.          GOSUB 63583
  1797. * REPLACING old line(s) by new
  1798. 63600 ' MarkItems - Converts a list of items ZUserIn$(), items ZAnsIndex
  1799.       '             thru ZLastIndex, into a marked list MarkedList$.
  1800.       '
  1801.       SUB MarkItems (IsMarking,MarkedList$,MarkedDesc$) STATIC
  1802.       IF NOT IsMarking THEN _
  1803.          EXIT SUB
  1804.       FOR Temp = ZAnsIndex to ZLastIndex
  1805. * ------[ first line different ]------
  1806.         MarkedList$ = MarkedList$ + ZUserIn$(Temp) + ZCarriageReturn$
  1807. '
  1808. 'IF MarkedDesc$ = "file" then 
  1809. '      CALL AllCaps(ZUserIn$(Temp))              'ANSIEd
  1810. '      CALL Remove (ZUserIn$(Temp),", ")
  1811. '      CALL RotorsDir (ZUserIn$(Temp),ZSubDir$(),ZSubDirCount + _      'Pe 06/01/92
  1812. '                      ((ZUserSecLevel < ZMinSecToView) OR _       'Pe 06/01/92
  1813. '                       NOT ZCanDnldFromUp),MarkingTime,"D")       'Pe 06/01/92
  1814. '               IF NOT ZOK Then _
  1815. '                  ZUserIn$(Temp) = "" : _
  1816. '               Call QuickTput( ZUserIn$(Temp) + "NOT FOUND",1)
  1817. '
  1818. '         END IF
  1819. '
  1820. '
  1821.       NEXT
  1822.       CALL ReportMarked (MarkedList$,MarkedDesc$)
  1823.       END SUB
  1824.       SUB ReportMarked (MarkedList$,ListDesc$) STATIC
  1825.       CALL FindLast (MarkedList$,ZCarriageReturn$,Temp,ZLastIndex)
  1826.       CALL QuickTPut1 (STR$(ZLastIndex) + " " + ListDesc$ + "(s) now marked")
  1827.       ZLastIndex = 0
  1828.       END SUB
  1829. * REPLACING old line(s) by new
  1830. 63615 ' * Sets up next message base link *
  1831.       SUB NextConf (DoJoin) STATIC
  1832.       IF ZLinkedConf$ = "" OR (NOT DoJoin) THEN _
  1833.          EXIT SUB
  1834.       EndConf = INSTR(ZLinkedConf$,ZCarriageReturn$)
  1835.       ZHomeConf$ = LEFT$(ZLinkedConf$,EndConf-1)
  1836.       IF ZNonStop THEN _
  1837. * ------[ first line different ]------
  1838.             Call GetRBBSString(199,RBBSString$) : _      'Pe 01/16/93
  1839.             OutTxt$ = RBBSString$ : _                'Pe 01/16/93
  1840.          CALL QuickTPut1 (OutTxt$ + " " + ZHomeConf$) _
  1841.       ELSE _
  1842.         Call GetRBBSString(200,RBBSString$) : _      'Pe 01/16/93
  1843.             OutTxt$ = RBBSString$ : _                'Pe 01/16/93
  1844.          ZOutTxt$ = OutTxt$ + " " + ZHomeConf$ + " ([Y],N)" : _
  1845.          ZTurboKey = -ZTurboKeyUser : _
  1846.          ZSubParm = 1 : _
  1847.          CALL TGet : _
  1848.          IF ZNo THEN _
  1849.             ZHomeConf$ = "" : _
  1850.             ZGlobalRead = ZFalse : _
  1851.             EXIT SUB
  1852.       ZLinkedConf$ = RIGHT$(ZLinkedConf$,LEN(ZLinkedConf$)-EndConf)
  1853.       END SUB
  1854. * REPLACING old line(s) by new
  1855. 63625 ' * Sets SysOp security variables Formerly 5370 of rbbs-pc.bas
  1856.       ' * Returns ZWasA true when remote or global sysop
  1857.       SUB SetSysOp STATIC
  1858.       ZRemoteSysop = ((ZActiveUserName$ = ZSecretName$) OR _
  1859. * ------[ first line different ]------
  1860.                       (ZOrigUserName$ = ZSecretName$)) _
  1861.       OR _
  1862.       (ZActivUserName$ ="SYSOP")     'LK 12/05/91
  1863.       ZWasA = ZRemoteSysop
  1864.       ZGlobalSysop = (ZGlobalSysop OR (ZWasA AND ZOrigCnfg$ = ZConfigFileName$))
  1865.       IF ZGlobalSysop THEN _
  1866.          ZWasA = ZTrue
  1867.       END SUB
  1868. * REPLACING old line(s) by new
  1869. 63630 ' * Sets the user preferences based on user record.
  1870.       ' * Formerly in RBBS-PC.BAS
  1871.       SUB SetUserPref STATIC
  1872.       IF ZWasA THEN _
  1873.          ZUserSecLevel = ZSysopSecLevel _
  1874.       ELSE ZUserSecLevel = CVI(ZSecLevel$)
  1875.       ZBankTime = ASC(ZBankTime$)
  1876.       ZLastMsgRead = CVI(MID$(ZUserOption$,3,2))
  1877.       ZUserXferDefault$ = MID$(ZUserOption$,5,1)
  1878.       IF ZUserXferDefault$ = " " THEN _
  1879.          ZUserXferDefault$ = "N"
  1880.       CALL XferType (2,ZTrue)
  1881.       WasX = ASC(MID$(ZUserOption$,6,1))
  1882.       ZWasGR = (WasX MOD 3)
  1883.       ZBoldText$ = CHR$(48 - (WasX > 50))
  1884.       ZUserTextColor = (WasX - ZWasGR)/3 + 21
  1885.       IF ZUserTextColor > 37 THEN _
  1886.          ZUserTextColor = ZUserTextColor - 7
  1887.       IF ZEmphasizeOff$ <> "" THEN _
  1888.          CALL QuickTPut (ZColorReset$,0)
  1889.       IF ZEmphasizeOnDef$ <> "" THEN _
  1890.          ZEmphasizeOff$ = ZEscape$ + "[" + ZBoldText$ + ";40;" + MID$(STR$(ZUserTextColor),2) + "m" _
  1891.       ELSE ZEmphasizeOff$ = ""
  1892.       IF ZWasGR = 1 AND NOT ZEightBit THEN _
  1893.          ZWasGR = 0
  1894.       CALL SetGraphic (ZWasGR)
  1895.       ZRightMargin = CVI(MID$(ZUserOption$,7,2))
  1896.       IF ZRightMargin > 72 THEN _
  1897.          ZRightMargin = 72
  1898. * ------[ first line different ]------
  1899.            IF NOT ZConfMode THEN _
  1900.          ZWasCI$ = ZCityState$ : _
  1901.       CALL Trim (ZWasCI$)
  1902.       UserOptions = CVI(MID$(ZUserOption$,9,2))
  1903.       ZPromptBell = (UserOptions AND 1) > 0
  1904.       ZExpertUser = (UserOptions AND 2) > 0
  1905.       CALL SetExpert
  1906.       ZNulls = (UserOptions AND 4) > 0
  1907.       ZUpperCase = (UserOptions AND 8) > 0
  1908.       ZLineFeeds = (UserOptions AND 16) > 0
  1909.       ZCheckBulletLogon = (UserOptions AND 32) > 0
  1910.       ZSkipFilesLogon = (UserOptions AND 64) > 0
  1911.       ZFullScreenEditor = (UserOptions AND 128) > 0    'Pe 09/02/91
  1912.       ZReqQuesAnswered = (UserOptions AND 256) > 0
  1913.       ZMailWaiting = (UserOptions AND 512) > 0
  1914.       WasX = (UserOptions AND 1024 ) > 0
  1915.       CALL SetHiLite (NOT WasX)
  1916.       IF NOT ZHiLiteOff THEN _
  1917.          CALL QuickTPut (ZEmphasizeOff$,0)
  1918.       ZTurboKeyUser = (UserOptions AND 2048) > 0
  1919.       ZTurboKey = ZFalse
  1920.       ZFileWaiting = (UserOptions AND 4096) > 0
  1921.             REM ** Change to:                                      **
  1922.       REM ** ZAvailableForChat = (UserOptions AND 8192) = 0 **   'Rchat-Mpl
  1923.       REM ** If you want availability to be default ON       **
  1924.  
  1925.       ZAvailableForChat = (UserOptions AND 8192) > 0           ' RCHAT-Mpl
  1926.       CALL SetRegDisplay
  1927.       ZPageLength = ASC(MID$(ZUserOption$,13,1))
  1928.       IF ZSubBoard THEN _
  1929.          GOTO 63632
  1930.       WasX$ = ZEchoer$
  1931.       ZEchoer$ = MID$(ZUserOption$,14,1)
  1932.       IF INSTR("ICR",ZEchoer$) = 0 THEN _
  1933.          ZEchoer$ = "R"
  1934.       IF WasX$ <> ZEchoer$ THEN _
  1935.          CALL ReportEcho
  1936.       CALL SetEcho (ZEchoer$)
  1937. * REPLACING old line(s) by new
  1938. 63635 ' * Reports who is doing echoing.  Formerly 9525 of rbbs-pc.bas
  1939.       SUB ReportEcho STATIC
  1940.       IF ZEchoer$ = "R" THEN _
  1941.          ZOutTxt$ =  "RBBS now set" _
  1942.       ELSE IF ZEchoer$ = "C" THEN _
  1943. * ------[ first line different ]------
  1944.             Call GetRBBSString(201,RBBSString$) : _      'Pe 01/16/93
  1945.             ZOutTxt$ = RBBSString$  _                'Pe 01/16/93
  1946.            ELSE  Call GetRBBSString(202,RBBSString$) : _      'Pe 01/16/93
  1947.            ZOutTxt$ = RBBSString$                      'Pe 01/16/93
  1948.         Call GetRBBSString(203,RBBSString$)       'Pe 01/16/93
  1949.             OutTxt$ = RBBSString$                 'Pe 01/16/93
  1950.       CALL QuickTPut1 (ZOutTxt$ + OutTxt$)
  1951.       END SUB
  1952. * REPLACING old line(s) by new
  1953. 63640 ' * Welcomes caller on
  1954. * ------[ first line different ]------
  1955.       SUB SayWelcome (anystring$,FF) STATIC   'Pe 08/01/92
  1956.       On FF Goto 63641,63643,63644       'Pe 08/01/92
  1957. * INSERTING new line(s)
  1958. 63641 LOCATE 24,1                  'Pe 08/01/92
  1959.       CALL AMorPM
  1960.       ZUserLogonTime! = TIMER
  1961.       ZTimeLoggedOn$ = TIME$
  1962.       ZLinesPrinted = 0
  1963.       ZExpertUser = ZFalse
  1964.       CALL SetExpert
  1965.       ZOutTxt$ = ""
  1966.       IF ZMaxNodes > 1 THEN _
  1967.          ZOutTxt$ = " - Node " + ZNodeID$
  1968.       IF ZReliableMode THEN _
  1969.          ZOutTxt$ = ZOutTxt$ + " (Reliable)"
  1970. '     Call DelayTime (7)  'delay 7 seconds for high speed modems 'JK11/18/92
  1971. '      CALL QuickTPut1 ("Welcome to " + ZRBBSName$ + ZOutTxt$)  'Pe 06/26/92
  1972.       CALL TestANSI
  1973.       ZTestParity = ZTrue
  1974.       ZStopInterrupts = ZTrue
  1975.       ZFileName$ = ZPreLog$
  1976.       CALL FlushCom (WasX$)
  1977.       ZCommPortStack$ = ""
  1978. Exit Sub                         'Pe 08/01/92
  1979.  
  1980. 63643 IF NOT ZNewUser THEN _
  1981.      CALL QuickTPut1 (ZFG1$ +"Times on   :" + STR$(ZTimesLoggedOn) + ZCrLf$ +_
  1982.                       + ZFG2$ +"Last on was: " + anystring$ + ZEmphasizeOff$)
  1983.  IF ZRemindFileXfers OR NOT ZNewUser THEN _
  1984.        CALL CheckRatio (ZFalse)
  1985. Exit Sub
  1986.  
  1987. 63644 CALL QuickTPut1 (ZFG1$+"Logging " + ZActiveUserName$)
  1988.     Temp1$ =  MID$(ZBaudParity$,INSTR(ZBaudParity$," B"))
  1989. CALL QuickTPut1 (ZFG2$ + "RBBS-PC " + ZVersionID$ + ZCrLf$ + _
  1990.                  ZFG3$ + "Node " + ZNodeID$)
  1991. Call QuickTput1 (ZFG4$ + "Line speed " + ZCBaud$ + temp1$+ZFG1$ +_ 
  1992.                 ", Host operating at " + ZModemInitBaud$ + temp1$ + ZEmphziseOff$)
  1993. '                     ", Host operating at " + anystring$+ ZEmphziseOff$)
  1994. Call SkipLine (1) 
  1995.     IF ZMaxNodes > 1 THEN                                        ' CHAT0805
  1996.        CALL LogNewForChat (ZMaxNodes)                            ' CHAT0805
  1997.     END IF                                                       ' CHAT0805
  1998.  
  1999.       END SUB
  2000.  
  2001. * REPLACING old line(s) by new
  2002. 63656 CALL GetPassword
  2003.       IF ZErrCode <> 0 THEN _
  2004.          CALL UpdtCalr (ZPswdFile$ + " bad format!",2) : _
  2005.          GOTO 63659
  2006.       IF MatchPass THEN _
  2007.          ZTempPassword$ = LEFT$(ZTempPassword$ + SPACE$(15),15) : _
  2008.          IF MatchPass$ <> ZTempPassword$ THEN _
  2009.             GOTO 63654 _
  2010.          ELSE IF ZUserSecLevel >= ZMinSecForTempPswd THEN _
  2011.                  GOTO 63658 _
  2012.               ELSE GOTO 63654
  2013. * ------[ first line different ]------
  2014.    IF ZUserSecLevel <> ZTempSecLevel OR ZTempPassword$ <> "" THEN _
  2015.          GOTO 63654
  2016.       IF ZStartTime = 0 THEN _
  2017.          GOTO 63658
  2018.       WorkTime$ = TIME$
  2019.       TestTime = VAL(LEFT$(WorkTime$,2) + MID$(WorkTime$,4,2))
  2020.       IF TestTime => ZStartTime AND TestTime <= ZEndTime THEN _
  2021.          GOTO 63658
  2022.       IF ZEndTime < ZStartTime THEN _
  2023.          IF TestTime => ZStartTime OR TestTime <= ZEndTime THEN _
  2024.             GOTO 63658
  2025.       GOTO 63654
  2026. * REPLACING old line(s) by new
  2027. 63675 SUB SetUserUpDn STATIC
  2028.       ZDnlds = CVI(ZUserDnlds$)
  2029.       ZUplds = CVI(ZUserUplds$)
  2030.       ZBankTime = ASC(ZBankTime$)
  2031.       IF ZEnforceRatios THEN _
  2032.          ZDLToday! = CVS(ZTodayDl$) : _
  2033.          ZBytesToday! = CVS(ZTodayBytes$) : _
  2034.          ZDLBytes! = CVS(ZDlBytes$) : _
  2035.          ZULBytes! = CVS(ZULBytes$)
  2036.       END SUB
  2037.       SUB SetGlobalUpDn STATIC
  2038.       IF NOT ZGlobalsSet THEN _
  2039.          ZGlobalsSet = ZTrue : _
  2040.          ZGlobalDnlds = ZDnlds : _
  2041.          ZGlobalUplds = ZUplds : _
  2042.          ZGlobalDLToday! = ZDLToday! : _
  2043.          ZGlobalBytesToday! = ZBytesToday! : _
  2044.          ZGlobalDLBytes! = ZDLBytes! : _
  2045.          ZGlobalULBytes! = ZULBytes! : _
  2046.          ZGlobalBankTime = ZBankTime
  2047.       END SUB
  2048. * ------[ first line different ]------
  2049. '
  2050. * REPLACING old line(s) by new
  2051. 63700 ' $SUBTITLE: 'TestANSI - test caller for ANSI support'
  2052. ' $PAGE
  2053. '
  2054. '  NAME    -- TestANSI
  2055. '                                  MEANING
  2056. '  INPUTS  -- ZTestANSITime   # of seconds to wait for ANSI response
  2057. '                             0 = do not test for ANSI
  2058. '
  2059. * ------[ first line different ]------
  2060. '  OUTPUTS -- ZCanANSIChat      = ZTrue if ANSIChat possible         ' DD071301/CHAT
  2061. '
  2062. '  PURPOSE -- Test callers' software for support of ANSI graphics
  2063. '
  2064.       SUB TestANSI STATIC
  2065.       IF ZTestANSITime < 1 THEN _
  2066.          GOTO 63705
  2067.       IF ZLocalUser THEN _
  2068.          IF ZDOSAnsi THEN _
  2069.             GOTO 63710 _
  2070.          ELSE GOTO 63705
  2071.         Call GetRBBSString(204,RBBSString$)      'Pe 01/16/93
  2072.         OutTxt$ = RBBSString$                'Pe 01/16/93
  2073.       CALL QuickTPut (OutTxt$ ,2)
  2074.       CALL FlushCom(Temp$)
  2075.       CALL PutCom (ZEscape$ + "[6n")
  2076.       CALL DelayTime(ZTestANSITime)
  2077.       CALL WipeLine (5)
  2078.       CALL FlushCom(Temp$)
  2079.       CALL WipeLine (5)
  2080.       Temp = INSTR(Temp$,ZEscape$ + "[")
  2081.       IF Temp > 0 THEN _
  2082.          Temp = INSTR(Temp,Temp$,"R") : _
  2083.          IF TEMP > 0 AND TEMP < 9 THEN _
  2084.             GOTO 63710
  2085. * REPLACING old line(s) by new
  2086. 63710 CALL SetGraphic(2)
  2087.       ZHiLiteOff = ZFalse
  2088. * ------[ first line different ]------
  2089.      CALL QuickTPut1 ("*ANSI Color  Detected*")
  2090.       IF ZDOSANSI THEN _
  2091.          ZCanANSIChat = ZTrue        ' DD071301/CHAT
  2092.       END SUB
  2093. * REPLACING old line(s) by new
  2094. 63720 SUB AraAllCaps (Ara$(1),WhichElement) STATIC
  2095.       Temp$ = Ara$(WhichElement)
  2096.       CALL AllCaps (Temp$)
  2097.       Ara$(WhichElement) = Temp$
  2098.       END SUB
  2099. * ------[ first line different ]------
  2100. '
  2101. '******************** INSERTED AutoLogoff here ******************
  2102. '
  2103. ' $SUBTITLE: 'AutoLogOff - Subroutine to  to log off after transfer'
  2104. ' $PAGE
  2105. '
  2106.   SUB AutoLogOff STATIC
  2107.  ZAutoEnd = 0
  2108.  ZAbort = ZFalse    'Pe 01/19/92
  2109.   IF ZGetExtDesc = ZTrue or ZOK = ZFalse or ZAutoLogOffReq = ZTrue THEN _
  2110.     EXIT SUB
  2111.  ZSubParm = 1
  2112. ZStackC = ZTrue    'Pe 12/21/91
  2113. * INSERTING new line(s)
  2114. 64989  ZStopInterrupts = ZTrue   'Pe 04/17/92
  2115. CALL BufFile(ZHelpPath$+"AUTOOFF.MNU",X)     ' MO 04/13/92
  2116. '      ZOutTxt$ = " C)ontinue with transfer " + ZCrLf$ + _
  2117. '                 " A)bort transfer - Cancel"+ ZCrLf$ + _
  2118. '                 " G)o ahead LOG-OFF after Transfer " + ZCrLf$ + _
  2119. '                 ZCrLf$ + "Press [Enter] to continue or select (C,A,G)->"
  2120. ZStopInterrupts = ZFalse    'Pe 04/17/92
  2121. ZOutTxt$ = "Select ([C],A,G) "
  2122.         ZTurboKey = -ZTurboKeyUser
  2123.       ZSubParm = 1
  2124.       Call TGet
  2125.       CALL AllCaps (ZUserIn$)
  2126.       WasMplx = INSTR("CAG",ZUserIn$)
  2127.       CALL Carrier                      'Pe 03/06/92
  2128.       IF ZSubParm = -1 THEN _           'Pe 03/06/92
  2129.       ZFileSysParm = 7 : _              'Pe 03/06/92
  2130.       EXIT SUB                          'Pe 03/06/92
  2131. IF ZUserIn$ = "" or ZUserIn$ = " " Then _
  2132.       GOTO 64995
  2133.    ON WasMplx GOTO 64995,64990,64998
  2134.       GOTO 64989
  2135. 64990 ZAutoEnd = 2
  2136.       Call Skipline (2)
  2137.       EXIT SUB
  2138. 64995 ZAutoEnd = 3
  2139.       Call Skipline (2)
  2140.       EXIT SUB
  2141. 64998 ZAutoEnd = 1
  2142.       ZAutoLogoffReq = ZTrue     'Pe 12/20/92
  2143.       Call SkipLine (2)
  2144.       END SUB
  2145. '
  2146. ' ****  S - COMMAND FROM UTILITY MENU (STATISTICS)  ***  'Pe 09/02/91
  2147. '
  2148. SUB Statistics (CallsToDate!,ActiveMessages,HighMsgNumber,HighestMsgRecord,CurUserCount,MaxMsgs) STATIC
  2149.       ActionFlag = ZTrue
  2150.       IF ZActiveMessageFile$ = ZPrevBase$ THEN _
  2151.         ActionFlag = ZFalse
  2152.      CALL QuickTPut1 ("RBBS-PC " + ZVersionID$ + " Node " + ZNodeID$)
  2153.      ZOutTxt$ = ""
  2154.      IF NOT ZConfMode THEN _
  2155.            ZOutTxt$ = "Caller Number................"+STR$(CallsToDate!) + "  "+ZCrLf$
  2156. ZOutTxt$ = ZOutTxt$ + "Active Messages.............."+STR$(ActiveMessages)+ZCrLf$
  2157. ZOutTxt$ = ZOutTxt$ + "Next Msg Number.............."+STR$(HighMsgNumber + 1)+ZCrLf$
  2158.      IF ZLastMsgRead > 0 THEN _
  2159.      ZOutTxt$ = ZOutTxt$ + "Last msg you read............" + STR$(ZLastMsgRead)+ZCrLf$ _
  2160.      ELSE ZOutTxt$ = ZOutTxt$ + "You Have NOT Read Any Messages Yet !" +ZCrLf$ : _
  2161.      ZNewUserDgs = Ztrue
  2162.      ZSubParm = 2
  2163.      CALL TPut
  2164. IF ZSubParm < 0 THEN _
  2165.          EXIT SUB
  2166.     ZWasZ$ = ZUpldDriveFile$
  2167.      CALL FindFree
  2168.      CALL QuickTPut1 ("Upload disk has" + ZFreeSpace$)
  2169.      CALL QuickTPut1 ( "String Space = "+  (STR$(FRE("A")) + " bytes")) 'Pe 08/01/92
  2170.      CALL QuickTPut1 ( "StackSpace = "+  (STR$(FRE(-2)) + " bytes")) 'Pe 05/10/92
  2171. '   CALL LPrnt("Free Common String Space ="+ (STR$(FRE(ZWASZ$))),1) 'Bcfs Mods
  2172. '   CALL LPrnt("Free Local String Space ="+ (STR$(FRE(WASZ$))),1)   'Bcfs Mods
  2173. '   CALL LPrnt("Free Far Space ="+ (STR$(FRE(-1))),1)               'Bcfs mods
  2174.  
  2175.      IF (NOT ZSysop) AND (ZUserSecLevel < ZSecKillAny) THEN _
  2176.       CALL Delaytime (2) : _
  2177.         EXIT SUB
  2178.      UserWork = (ZHighestUserRecord * .95) + 1
  2179.      IF ZMsgsCanGrow THEN _
  2180.         ZWasY$ = " open" _
  2181.      ELSE ZWasY$ = STR$(HighestMsgRecord + 1 - ZMaxNodes - ZNextMsgRec)
  2182.      ZOutTxt$ = "USERS: used" + _
  2183.           STR$(CurUserCount - 1) + _
  2184.           " avl" + _
  2185.           STR$(UserWork - CurUserCount) + _
  2186.           "  MSGS: used" + _
  2187.           STR$(ActiveMessages) + _
  2188.           " avl" + _
  2189.           STR$(MaxMsgs - ActiveMessages) + _
  2190.           "  MSG REC: used" + _
  2191.           STR$(ZNextMsgRec - 1) + _
  2192.           " avl" + ZWasY$
  2193.      ZSubParm = 2
  2194.      CALL TPut
  2195. IF ZSubParm < 0 THEN _
  2196.    EXIT SUB
  2197. CALL DelayTime (2)
  2198. END SUB
  2199. '********************************************************************
  2200. '
  2201. SUB ShowUsrProfile STATIC
  2202.  CALL QuickTPut (CHR$(12),0) ' to clear screen
  2203. WasX$ =  "USER NAME : " + ZActiveUserName$ + ZCrLF$ + _
  2204.          "SECURITY  :" + STR$(ZUserSecSave) + ZCrLf$ + _
  2205.          "PASSWORD  : " + ZPswdSave$ + ZCrLF$ + _
  2206.          "READ MSG. :" + STR$(ZLastMsgRead)
  2207. Call QuickTput1 (WasX$)
  2208. WasX$ =  "TIMES ON  :" + STR$(ZTimesLoggedOn) +ZCrLF$ + _
  2209.          "Last ON   : " + ZLastDateTimeOnSave$ +ZCRLF$ + _
  2210.          "DownLoads :" + STR$(ZDnlds)                            'Pe 07/09/92 
  2211. Call QuickTput1 (WasX$)
  2212. WasX$ =  "Uploads   :" + STR$(ZUplds)+ ZCrLf$ + _                'Pe 06/01/92
  2213.          "Baud Rate : " + ZCBaud$ + " Bps"                       'Pe 06/01/92
  2214. Call QuickTPut1 (WasX$)
  2215. WasX$ = "Dl-Bytes  :" + STR$(ZDLBytes!)+ZCrLF$ + _
  2216.         "Ul-Bytes  :" + STR$(ZULBytes!)                          'Pe 07/09/92
  2217. Call QuickTput1 (WasX$)
  2218. WasX$ = "User mode : " + MID$("NoviceExpert",1 -6 * ZExpertUser,6) +ZCrLf$ +_
  2219.         "Graphics  : " + MID$("None AsciiColor",GR * 5 + 1,5)
  2220. Call QuickTput1 (WasX$)
  2221. WasX$ = "Protocol  : " + ZUserXferDefault$ + ZCrLF$ + _
  2222.         "Upper Case: " + MID$("and lowerONLY", 1 - 9 * ZUpperCase,9)+ZCrLf$ + _
  2223.         "Line Feeds: " + FNOFFON$(ZLineFeeds)+ ZCrLF$ + _                 'Pe 07/11/92
  2224.         "Nulls     : " + FNOFFON$(ZNulls)
  2225. Call QuickTPut1 (WasX$)
  2226.       IF ZRestrictByDate THEN _
  2227.      CALL QuickTPut ("EXPIRATION: " + ZExpirationDate$,1)
  2228.      CALL Toggle (-8)
  2229.      CALL Toggle (-5)
  2230.      CALL Toggle (-10)
  2231.      CALL Toggle (-2)
  2232.      CALL Toggle (-4)
  2233.      CALL Toggle (-1)
  2234.      CALL Toggle(-11)                                                ' RCHAT
  2235. CALL AskMore ("",ZTrue,ZFalse,WasX,ZTrue)
  2236. END SUB
  2237. '********************************************************************
  2238. '
  2239. SUB BatchUpload (ZDesc$,ZUCat$,WasFF) STATIC
  2240. On WasFF GOTO 69000, 69500
  2241. 69000    CALL OpenWorkA ("BatchUp" +ZNodeID$ +".LST")
  2242.          Call PrintWorkA (ZFileName$)
  2243.          CALL PrintWorkA (ZFileNameHold$)
  2244.          CALL PrintWorkA (ZDesc$)
  2245.          CALL PrintWorkA (ZUcat$)
  2246.         Close 2
  2247.      CALL OpenWorkA (ZBatchWorkFile$) 
  2248.        CALL PrintWorkA (ZFileName$)
  2249.      Close 2
  2250. IF ZAnsindex = ZLastIndex THEN 
  2251.       ZUpBatchTransfer = ZFalse
  2252.       ZWasBatchTransfer = ZTrue
  2253.   End IF
  2254. Exit Sub
  2255. '
  2256. '
  2257. 69500 CALL KillWork (ZBatchWorkFile$)
  2258.       ZErrCode = 0
  2259.     Temp$ = "BatchUp" + ZNodeid$ + ".LST"
  2260.       CALL OpenWork (8,Temp$)
  2261.          While Not EOF(8)
  2262.        Line Input #8,ZFileName$
  2263.        Line Input #8,ZFileNameHold$
  2264.        Line Input #8,ZDesc$
  2265.        Line Input #8,ZUCat$
  2266.         Call Findit (ZFileName$)
  2267.     IF ZOK THEN _
  2268.       CALL UpdtUpload (ZCategoryName$(),ZCategoryCode$(), ZLinesInMsg,2) _
  2269.         Else CALL UpdtCalr (ZFileNameHold$ + " ABORTED during BatchUL",2) 
  2270.           ZWasBatchTransfer = ZFalse                  'Pe 09/12/91
  2271.          ZAlreadyGiven = ZTrue
  2272.        Wend
  2273.      Close 8
  2274. End Sub
  2275.  
  2276. 69600 ' $SUBTITLE: 'BATCHIT - subroutine to list files for batch downloading'
  2277. ' $PAGE
  2278. '
  2279.  SUB BATCHIT STATIC
  2280.       CALL PutCom (CHR$(7))
  2281.         Call GetRBBSString(205,RBBSString$) : _      'Pe 01/16/93
  2282.         OutTxt$ = RBBSString$ : _                'Pe 01/16/93
  2283.       CALL QuickTPUT (OutTxt$,1)
  2284.        ZWasB=1
  2285.        FOR BatchF = 2 TO 25
  2286.         ZOutTxt$ = "Name of file #" + STR$(Batchf-1)
  2287.         Call TGet
  2288.          IF ZUserIn$ = "" THEN GOTO 70415
  2289.           ZUserIn$(BatchF) = ZUserIn$
  2290.           ZAnsIndex = BatchF+1
  2291.         NEXT BatchF
  2292. 70415 BatchF =  BatchF-1
  2293.       ZLastIndex = BatchF
  2294.         End Sub
  2295. '
  2296. ' $SUBTITLE: 'TStat --- Display Transfer Stats from Xfer-? file'
  2297. ' $PAGE
  2298. '
  2299.       SUB TStats STATIC                                              ' MplXfer
  2300.       CALL OpenWork (2,"XFER-" + ZNodeID$ + ".DEF")                  ' MplXfer
  2301.       IF ZErrCode <> 0 THEN _
  2302.        Exit Sub                                                    'Pe 06/01/92
  2303.       CALL SkipLine (2)                                              ' MplXfer
  2304.       Call GetRBBSString(206,RBBSString$)      'Pe 01/16/93
  2305.       OutTxt$ = RBBSString$                 'Pe 01/16/93
  2306.       CALL QuickTPut (ZFG2$ + OutTxt$,2)
  2307.         Call GetRBBSString(207,RBBSString$)      'Pe 01/16/93
  2308.             OutTxt$ = RBBSString$               'Pe 01/16/93
  2309.       CALL QuickTPut1 (ZFG4$ + OutTxt$)
  2310.         Call GetRBBSString(208,RBBSString$)      'Pe 01/16/93
  2311.             OutTxt$ = RBBSString$               'Pe 01/16/93
  2312. Call QuickTput1 (ZFG3$ +OutTxt$ + ZEmphasizeOff$) ' MplXfer
  2313.       WHILE NOT EOF(2)                                               ' MplXfer
  2314.         LINE INPUT #2,Stat$                                          ' MplXfer
  2315.         WasS = INSTR(Stat$,"rs ")                                    ' MplXfer
  2316.         IF WasS > 0 THEN _                                           ' MplXfer
  2317.            WasX$ = MID$(Stat$, 2, WasS)                              ' MplXfer
  2318.         Match = INSTR(Stat$, ".")                                    ' MplXfer
  2319.         IF Match > 0 THEN _                                          ' MplXfer
  2320.            WasZyX$ = MID$(Stat$, Match - 8, 12)                      ' MplXfer
  2321.         Match = 0                                                    ' MplXfer
  2322.         Start = 1                                                    ' MplXfer
  2323.         DO                                                           ' MplXfer
  2324.           Match = INSTR(Start, WasZyX$, "\")                         ' MplXfer
  2325.           IF Match > 0 THEN _                                        ' MplXfer
  2326.              WasZyX$ = RIGHT$(WasZyX$, LEN(WasZyX$) - Match)         ' MplXfer
  2327.         LOOP WHILE Match                                             ' MplXfer
  2328.         Match = 0                                                    ' MplXfer
  2329.         Start = 1                                                    ' MplXfer
  2330.         DO                                                           ' MplXfer
  2331.           Match = INSTR(Start, WasZyX$, " ")                         ' MplXfer
  2332.           IF Match > 0 THEN _                                        ' MplXfer
  2333.              WasZyX$ = RIGHT$(WasZyX$, LEN(WasZyX$) - Match)         ' MplXfer
  2334.         LOOP WHILE Match                                             ' MplXfer
  2335.         WasXy = LEN(WasZyX$)                                         ' MplXfer
  2336.  
  2337.       IF ZErrCode <> 0 THEN _
  2338.        Exit Sub                                                    'Pe 06/01/92
  2339.  
  2340.      CALL QuickTPut1 (ZFG1$ + WasZyX$ + SPACE$(15-WasXy) + WasX$ + ZEmphasizeOff$) ' MplXfer
  2341.       WEND                                                           ' MplXfer
  2342.       CALL SkipLine (1)                                              ' MplXfer
  2343.       CLOSE 2                                                        ' MplXfer
  2344.       CALL DelayTime (3)                                             ' MplXfer
  2345.       END SUB                                                        ' MplXfer
  2346. '
  2347. ' $SUBTITLE: 'ShowBull --- Intitial Welcom screen displayed'
  2348. ' $PAGE
  2349. '
  2350.  Sub ShowBull (UsrSecLevel$) STATIC   'Pe 07/23/92
  2351. 71525 CALL SkipLine (2)
  2352.      WasX$ = ZFG1$+"Review System Screens Available:" + ZCrLf$ + _
  2353.              ZFG4$+"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
  2354. Call QuickTPut (WasX$,2)
  2355.      WasX$ = ZFG2$+"P)relog Screen"+ZCrLf$ + _
  2356.              ZFG3$+"W)elcome Screen" + ZCrLf$ + _
  2357.              ZFG4$+"O)nline News Screens"
  2358. Call QuickTPut (WasX$,1)
  2359.     WasX$ = ZFG1$+"Y)our Access Level" +ZCrLf$ + _
  2360.             ZFG2$+"N)ew User Sign-On" + ZCrLf$ + _
  2361.                   "[Q]uit"+ZEmphasizeOff$
  2362. Call QuickTPut (WasX$,2)
  2363. ZOutTxt$ = "Please make a Selection (P,W,O,Y,N,[Q]) "
  2364.         GOSUB 72999                     'Pe 04/25/92
  2365.         CALL AllCaps (ZUserIn$)
  2366.         WasMplX = INSTR("PWOYNQ",ZUserIn$)
  2367.         IF ZUserIn$ = "" THEN _
  2368.            GOTO 71596
  2369.     ON WasMplX GOTO 71530,71533,71536,71539,71541,71596
  2370. 71530 ZFileName$ = ZPreLog$
  2371.      GOTO 71550
  2372. 71533 ' ZFileName$ = ZWelcomeFile$
  2373.           CALL Displaywelcome
  2374.           Goto 71525
  2375.    '     GOTO 71550  
  2376. 71536 ZFileName$ = ZNewsFileName$
  2377.      GOTO 71550
  2378. 71539 ZFileName$ = ZWelcomeFileDrvPath$ + _      'Pe 07/19/92
  2379.                  "LG" + _
  2380.                  UsrSecLevel$ + _                'Pe 07/23/92
  2381.                  ".DEF"                          'Pe 06/01/92
  2382.      GOTO 71550
  2383. 71541 ZFileName$ = ZNewUserFile$
  2384. 71550 GOSUB 71790
  2385.      CALL AskMore ("",ZTrue,ZFalse,WasX,ZTrue)
  2386.      GOTO 71525
  2387. 71596 ZFileSysParm = 1
  2388.        Exit Sub
  2389. '
  2390. 71790 CALL Graphic (ZFileName$)
  2391.      CALL BufFile (ZFileName$,WasX)
  2392.      CALL Carrier
  2393.      IF ZSubParm = -1 THEN _
  2394.         ZFileSysParm = 7 : _
  2395.         Exit Sub
  2396.      RETURN
  2397.  
  2398. 72995 GOSUB 72997
  2399.       ZSubParm = 1
  2400. 72996 CALL TGet
  2401. 72997 IF ZSubParm < 0 THEN _
  2402.       ZFileSysParm = 7 :_
  2403.          Exit Sub
  2404.       RETURN
  2405. 72998 ZOutTxt$ = ZOutTxt$ + _
  2406.            ZPressEnter$
  2407.       GOTO 72995
  2408. 72999 ZTurboKey = -ZTurboKeyUser
  2409.       GOTO 72995
  2410. End Sub
  2411. '
  2412. 78150   SUB DisplayWelcome STATIC
  2413. '
  2414.        ZStopInterrupts = NOT ZWelcomeInterruptable                   ' DD011601
  2415.        ZBypassTimeCheck = ZTrue                                      ' DD011601
  2416.        ZFileName$ = ZWelcomeFile$ + ".LST"                           ' DD011601
  2417.        CALL FindIt (ZFileName$)                                      ' DD011601
  2418.        IF ZOK THEN                                                   ' DD011601
  2419.           CALL OpenWork (7, ZFileName$)                              ' DD011601
  2420.           WHILE NOT EOF(7)                                           ' DD011601
  2421.              CALL ReadDir (7,1)                                      ' DD011601
  2422.              ZFileName$ = ZOutTxt$                                   ' DD011601
  2423.              ZStopInterrupts = NOT ZWelcomeInterruptable             ' DD011601
  2424.              ZBypassTimeCheck = ZTrue                                ' DD011601
  2425.              ZDisplayAsUnit = ZTrue                                  ' DD011601
  2426.              GOSUB 78160                                               ' DD011601
  2427.           WEND                                                       ' DD011601
  2428.           CLOSE 7                                                    ' DD011601
  2429.        ELSE                                                          ' DD011601
  2430.           ZFileName$ = ZWelcomeFile$                                 ' DD011601
  2431.           ZDisplayAsUnit = ZTrue                                     ' DD011601
  2432.           GOSUB 78160                                                ' DD011601
  2433.        END IF                                                        ' DD011601
  2434.        ZDisplayAsUnit = ZFalse                                       ' DD011601
  2435.        EXIT SUB                                                      ' DD011601
  2436. 78160  CALL Graphic (ZFileName$)                                     ' DD011601
  2437.        CALL BufFile (ZFileName$,WasX)                                ' DD011601
  2438.        CALL Carrier                                                  ' DD011601
  2439.        IF ZSubParm = -1 THEN _                                       ' DD011601
  2440.           EXIT SUB                                                   ' DD011601
  2441.        RETURN                                                        ' DD011601
  2442.        END SUB                                                       ' DD011601
  2443. '
  2444. ' $SUBTITLE: 'Line108 --- was line 108 in RBBS-PC.BAS'
  2445. ' $PAGE
  2446. '
  2447.  Sub line108 STATIC   'Pe 07/23/92
  2448.  
  2449.  CALL BreakFileName (ZCallersFile$,Drive$,WasX$,ZWasY$,ZTrue)
  2450.     ZCallersFilePrefix$ = WasX$
  2451.     ZNodeWorkDrvPath$ = Drive$
  2452.     ZArcWork$ = ZNodeWorkDrvPath$ + _
  2453.                 "ARCWORK" + _
  2454.                 ZNodeFileID$ + _
  2455.                 ".DEF"
  2456.     IF ZUseBASICWrites THEN _
  2457.        ZLocalBksp$ = ZBackArrow$ _
  2458.     ELSE ZLocalBksp$ = ZBackSpace$
  2459.     ZSysopFullName$ = LEFT$(ZSysopFirstName$ + " " + ZSysopLastName$ + "  ",22)
  2460.     ZFastFileSearch = ZFalse
  2461.     CALL FindIt (ZFastFileList$)
  2462.     IF ZOK THEN _
  2463.        CALL FindIt (ZFastFileLocator$) : _
  2464.        IF ZOK THEN _
  2465.           ZFastFileSearch = ZTrue : _
  2466.           CALL BreakFileName (ZFastFileList$, Drive$,WasX$,ZWasY$,ZTrue) : _
  2467.           ZFileName$ = Drive$ + WasX$ + "T" + ZWasY$ : _
  2468.           CALL FindIt (ZFileName$) : _
  2469.           IF ZOK THEN _
  2470.              CALL OpenRSeq (ZFileName$, WasX, WasY, 72) : _
  2471.              FIELD 2, 72 AS IndexRec$ : _
  2472.              GET 2, 1 : _
  2473.              ZFastTabs$ = IndexRec$ : _
  2474.              CLOSE 2 _
  2475.           ELSE ZFastTabs$ = ""
  2476. '
  2477. ' *****  INITIALIZE NetBIOS INTERFACE   ****
  2478. '
  2479.    IF ZNetworkType = 6 AND NOT ZSubBoard THEN _
  2480.       CALL InitIBM
  2481. '
  2482. ' *****  ESTABLISH NEXT CALLERS FILE RECORD AVAILABLE   ***
  2483. '
  2484.     CALL SetCall
  2485.  IF NOT ZSubBoard THEN _
  2486.        ZLocalUser = ZTrue : _
  2487.        ZOutTxt$ = ZColorReset$ : _
  2488.        ZSubParm = 1 : _
  2489.        CALL TPut : _
  2490.        ZLocalUser = ZFalse
  2491.     ZUpldDriveFile$ = RIGHT$(ZDnldDrives$,1)+":FREESPAC.UPL"
  2492.     ZMinsPerSessionDef = ZMinsPerSession
  2493.     ZMaxPerDayDef = ZMaxPerDay
  2494.     ZMaxBankTimeDef = ZMaxBank
  2495. End Sub
  2496.